Rendi le pagine WooCommerce accessibili solo agli utenti registrati

29 gen 2014, 00:05:41
Visualizzazioni: 37.2K
Voti: 13

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

Tramite il plugin User Access Manager, ho negato l'accesso alla pagina del negozio, ma con un link 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 cercano di accedere a una pagina WooCommerce?

0
Tutte le risposte alla domanda 3
3
28

Inserisci questo nel tuo file functions.php:

function wpse_131562_redirect() {
    if (
        ! is_user_logged_in()
        && (is_woocommerce() || is_cart() || is_checkout())
    ) {
        // puoi personalizzare la seguente riga in base alle tue esigenze
        wp_redirect(home_url());
        exit;
    }
}
add_action('template_redirect', 'wpse_131562_redirect');

Cosa fa?
Verifichiamo se un utente non loggato tenta di visualizzare una pagina WooCommerce, e lo reindirizziamo alla nostra homepage.

29 gen 2014 00:13:23
Commenti

Grazie per il tuo aiuto. Il file functions.php si trova nella cartella del mio tema?? E come posso richiamare questa funzione dalla pagina del prodotto? Grazie :-)

Alessandro Alessandro
29 gen 2014 10:30:46

Grazie mille. Il tuo codice funziona perfettamente per me. Molte molte grazie :)

Alessandro Alessandro
29 gen 2014 11:45:59

Assicurati di non impostare nessuna delle pagine di WooCommerce come homepage, perché altrimenti il sito smetterà di funzionare.

SPRBRN SPRBRN
13 nov 2017 11:23:57
2
10

Ho appena modificato il reindirizzamento a

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

in modo che gli utenti vengano reindirizzati alla pagina "My-Account" se non sono loggati o registrati.

18 nov 2015 13:28:39
Commenti

Questo non è il metodo migliore per reindirizzare alla pagina My Account. È meglio recuperare il permalink della pagina My Account che hai collegato nelle impostazioni di WooCommerce. In questo modo, ogni volta che il permalink viene modificato o hai un sito multilingue in esecuzione, il permalink verrà comunque recuperato correttamente. In breve: è meglio non hardcodare permalink/slug (o URL in generale). Un metodo migliore sarebbe: wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );

Rens Tillmann Rens Tillmann
2 mar 2018 21:25:29

nel tuo codice manca il ; alla fine

user889030 user889030
6 feb 2019 20:52:46
1

Cambierei con questo

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

invece di

wp_redirect( site_url('my-account/') );
5 feb 2020 09:30:07
Commenti

Potresti elaborare perché questo sarà utile, in modo che altre persone possano imparare qualcosa dalla tua risposta?

Krzysiek Dróżdż Krzysiek Dróżdż
5 feb 2020 10:11:55