WooCommerce-Seiten nur für angemeldete Benutzer zugänglich machen


12

Ich habe eine Website mit WordPress und einen E-Commerce mit WooCommerce. Ich möchte, dass mein Shop (und alle seine Seiten) nur von angemeldeten Benutzern gesehen werden.

Über das User Access Manager- Plugin habe ich den Zugriff auf die Shop-Seite verweigert, aber mit einem direkten Link zu einem Produkt usw. kann man trotzdem auf diese bestimmte Seite zugreifen, selbst wenn der Benutzer nicht angemeldet ist.

Wie kann ich Benutzer, die nicht angemeldet sind, auf eine andere Seite umleiten, wenn sie versuchen, auf eine WooCommerce-Seite zuzugreifen?

Antworten:


24

Fügen Sie dies in Ihre functions.phpDatei ein:

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // feel free to customize the following line to suit your needs
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

Was tut es?
Wir prüfen, ob ein nicht angemeldeter Benutzer eine WooCommerce-Seite sehen möchte, und leiten ihn auf unsere Homepage weiter.


Danke für deine Hilfe. Die Datei functions.php befindet sich in meinem Theme-Ordner ?? Und wie kann ich diese Funktion von der Produktseite aus aufrufen? Danke :-)
Alessandro

Vielen Dank. Ihr Code funktioniert gut für mich. Vielen vielen Dank :)
Alessandro

1
Stellen Sie sicher, dass Sie keine der Woocommerce-Seiten als Startseite festlegen, da die Website dann nicht mehr funktioniert.
SPRBRN

7

Ich habe gerade die Umleitung auf geändert

wp_redirect( site_url('my-account/') )

Benutzer werden daher auf die Seite "Mein Konto" umgeleitet, wenn sie nicht angemeldet oder registriert sind.


2
Dies ist nicht die beste Methode, um zur My AccountSeite umzuleiten . Es ist besser, den Permalink der Seite "Mein Konto" abzurufen, die Sie in Ihren WooCommerce-Einstellungen verlinkt haben. Auf diese Weise wird der Permalink immer dann korrekt abgerufen, wenn der Permalink geändert wird oder Sie eine mehrsprachige Site haben, auf der der Permalink ausgeführt wird. Kurz gesagt: Es ist besser, Permalinks / Slugs (oder URLs im Allgemeinen) nicht hart zu codieren. Eine bessere Methode wäre:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

Sie Code fehlt; it end
user889030
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.