Rendi le pagine WooCommerce accessibili solo agli utenti che hanno effettuato l'accesso


12

Ho un sito Web che utilizza WordPress e un e-commerce che utilizza WooCommerce. Vorrei che il mio negozio (e tutte le sue pagine) fosse visto solo dagli utenti che hanno effettuato l'accesso.

Tramite il plug-in User Access Manager , ho negato l'accesso alla pagina del negozio, ma con un collegamento diretto a un prodotto ecc. Si può comunque accedere a quella particolare pagina, anche se l'utente non ha effettuato l'accesso.

Come posso reindirizzare gli utenti che non hanno effettuato l'accesso a un'altra pagina se provano ad accedere a una pagina WooCommerce?

Risposte:


24

Metti questo nel tuo functions.phpfile:

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');

Che cosa fa?
Controlliamo se un utente non connesso desidera vedere una pagina WooCommerce e lo reindirizza alla nostra home page.


Grazie per l'aiuto. Il file Functions.php è nella mia cartella dei temi ?? E come posso richiamare questa funzione dalla pagina del prodotto? Grazie :-)
Alessandro,

Grazie mille. Il tuo codice funziona bene per me. Mille grazie :)
Alessandro

1
Assicurati di non impostare nessuna delle pagine di woocommerce come pagina iniziale, perché il sito non funzionerà più.
SPRBRN,

7

Ho appena cambiato il reindirizzamento in

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

pertanto gli utenti vengono reindirizzati sulla pagina "Account personale" se non hanno effettuato l'accesso o registrati.


2
Questo non è il metodo migliore per reindirizzare alla My Accountpagina. È meglio recuperare il permalink della pagina Il mio account che hai collegato nelle impostazioni di WooCommerce. In questo modo ogni volta che il permalink viene modificato o si dispone di un sito multilingue che esegue il permalink verrà comunque recuperato correttamente. In breve: è meglio non codificare i permalink / slug (o gli URL in generale). Un metodo migliore sarebbe:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

codice mancante; finisce
user889030

0

Vorrei cambiare a questo

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

invece di

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

2
Potresti spiegare perché questo aiuterà, così che altre persone possano imparare qualcosa dalla tua risposta?
Krzysiek Dróżdż
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.