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?

Alessandro
quelle

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.

tfrommen
quelle
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.

Pierre
quelle
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