Leiten Sie zuerst die private Seite zum Anmelden um und zeigen Sie dann die Seite in WordPress an

Lesezeit: 2 Minuten

Benutzer-Avatar
Benutzer2887097

Ich habe mehrere private Seiten, die von meinen öffentlichen Seiten verlinkt sind. Wenn ein nicht eingeloggter Benutzer auf einen dieser Links klickt, erhält er standardmäßig eine 404-Seite. Ich möchte, dass sie eine Anmeldeseite erhalten und dann mit der angeforderten Seite fortfahren.

Das Redirect-Plugin von Pete ist großartig, aber es möchte nach der Anmeldung zu speziell festgelegten Seiten pro Benutzer/Rolle gehen. Ich möchte einfach auf der angeforderten Seite fortfahren.

Irgendwelche Vorschläge? danke, reich

  • Wie bekommen sie eine 404-Seite? Verwenden Sie dafür ein Plugin wie Advanced Access Manager oder UAM?

    – Laxmana

    12. November 2013 um 16:13 Uhr


Dies ist der richtige Weg

add_action('wp', 'redirect_private_page_to_login');

function redirect_private_page_to_login(){

    global $wp_query;

    $queried_object = get_queried_object();

    if ($queried_object->post_status == "private" && !is_user_logged_in()) {

        wp_redirect(home_url('/login?redirect=".get_permalink($queried_object->ID)));

    } 
}

  • Wo soll ich diesen Code hinzufügen? zB functions.php oder page.php?

    – Amo

    20. Mai 2018 um 14:42 Uhr

  • Sehr einfach. Wenn Sie zum Standard-WP-Login umleiten möchten, verwenden Sie stattdessen Folgendes: wp_redirect( wp_login_url( get_permalink( $queried_object->ID ) ) );

    – Jeremy Carlson

    24. Januar 2020 um 22:49 Uhr

Ich hatte ein paar Probleme mit der Antwort von Tu Bui. Hier ist eine verbesserte Version.

add_action( 'wp', 'redirect_private_page_to_login' );
function redirect_private_page_to_login(){
    $queried_object = get_queried_object();
    if (
        isset( $queried_object->post_status ) &&
        'private' === $queried_object->post_status &&
        ! is_user_logged_in()
    ) {
        wp_safe_redirect( wp_login_url( get_permalink( $queried_object->ID ) ) );
        exit;
    }
}

Hier ist der gleiche Code in einem kleinen Plugin: https://github.com/wearerquired/private-page-login

if(is_user_logged_in()){
echo '<a href="https://stackoverflow.com/questions/19933095/link to pvt page"> pvt page </a>';
} else{
echo '<a href="link to Login page"> login to continue </a>';
}

  • Das ist ein toller Anfang, aber ich hatte auf etwas Automatisches gehofft. Ich möchte diesen Code nicht auf jeder privaten Seite einfügen müssen, die ich erstelle. Gibt es einen automagischen Weg?

    – Benutzer2887097

    12. November 2013 um 18:25 Uhr


  • Platzieren Sie diesen Code in einer Funktion und fügen Sie diese Funktion jeder Seite hinzu

    – Prinz Singh

    12. November 2013 um 18:28 Uhr

1312050cookie-checkLeiten Sie zuerst die private Seite zum Anmelden um und zeigen Sie dann die Seite in WordPress an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy