WooCommerce e is_user_logged_in(): reindirizzare gli utenti non autenticati alla homepage

27 set 2012, 06:20:32
Visualizzazioni: 19.5K
Voti: 2

Sto utilizzando WooCommerce e vorrei reindirizzare gli utenti non autenticati alla homepage, ma ho qualche difficoltà nel determinare dove implementare questa funzionalità.

Dalla mia ricerca ho capito che posso usare la funzione is_user_logged_in() per verificare se l'utente è loggato.

Ho provato a implementarla nel file woocommerce/woocommerce-functions.php:

// Quando i permalink predefiniti sono abilitati, reindirizza la pagina shop all'URL dell'archivio del tipo di post
if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] == woocommerce_get_page_id('shop') ) :
    wp_safe_redirect( get_post_type_archive_link('product') );
    exit;
endif;

ma la pagina rimane comunque visibile

0
Tutte le risposte alla domanda 3
1

Innanzitutto, non modificare mai i plugin di altre persone o i file core di WordPress.

Inoltre, utilizza le parentesi graffe invece di formattazioni estetiche, poiché queste ultime possono interrompere l'evidenziazione del codice nell'IDE, la corrispondenza delle parentesi, i controllori di sintassi e altri strumenti utili.

Quindi inserisci questo codice:

// Quando i permalink predefiniti sono abilitati, reindirizza la pagina del negozio all'URL dell'archivio del tipo di post
if (is_user_logged_in() && isset($_GET['page_id']) && $_GET['page_id'] > 0 && get_option( 'permalink_structure' )=="" && $_GET['page_id'] ==     woocommerce_get_page_id('shop') ) {
    wp_redirect( get_post_type_archive_link('product') );
    die();
}

In uno di questi punti:

  • all'inizio di functions.php
  • in un plugin dedicato
  • nella chiamata all'hook Init
27 set 2012 15:59:44
Commenti

grazie per il consiglio, proverò ad aggiungere questo al file functions.php

bugz bugz
27 set 2012 17:03:03
8

Dovrai inserire il tuo codice all'inizio dei template delle pagine Woo che desideri influenzare con il reindirizzamento, piuttosto che nel file functions. Ad esempio, se vuoi reindirizzare gli utenti quando cercano di accedere a una pagina di prodotto singolo, potresti inserirlo all'inizio del file plugins->woocommerce->templates->single-product.php.

Tuttavia, quando modifichi i template, ti consiglio di crearne una copia e posizionarla nella directory del tuo tema, in modo che quando WooCommerce verrà aggiornato non sovrascriverà le modifiche che hai apportato. Quindi, per l'esempio che ho fornito sopra (applicato al mio tema), copiere single-product.php e lo inserirei nella cartella themes->agency, apportando poi le modifiche necessarie direttamente lì. In questo modo, il tuo tema utilizzerà sempre quel file prima di quello presente nella cartella dei template di WooCommerce.

27 set 2012 15:29:13
Commenti

grazie, sai quale pagina dovrebbe essere modificata per reindirizzare gli utenti che visualizzano la pagina iniziale del negozio?

bugz bugz
27 set 2012 17:00:16

Poiché la pagina del negozio è effettivamente un loop, potresti inserire un hook nel tuo file functions.php. Copia questo codice e fammi sapere se funziona. http://pastie.org/4830106. Ho alcuni elementi strani sulla mia pagina del negozio (essenzialmente l'ho cancellata) quindi non posso testarlo personalmente. Se non funziona, lo sistemerò.

Kyle Kyle
27 set 2012 18:19:02

hm dopo aver aggiunto questo al mio file functions.php del tema, l'intero sito ha smesso di funzionare. dovevo aggiungerlo al file functions di woocommerce?

bugz bugz
27 set 2012 21:10:49

Scusa ho fatto un errore di sintesi pigro, cancella quello e prova questo http://pastie.org/4830960

Kyle Kyle
27 set 2012 21:17:03

Ok, ho testato questo codice e funziona sicuramente: http://pastie.org/4831059. Incollalo nel file functions.php

Kyle Kyle
27 set 2012 21:36:55

bugz - Ha funzionato?

Kyle Kyle
28 set 2012 00:22:13

Se questo ha funzionato, potresti controllare questa risposta...

Kyle Kyle
28 set 2012 18:11:27

Non sono d'accordo con l'inserimento di quel codice all'inizio dei template di pagina per le pagine Woo. Dovrebbe essere utilizzato l'template_redirect action hook.

cybmeta cybmeta
8 ago 2015 17:15:55
Mostra i restanti 3 commenti
1

Utilizza il codice nel file functions.php:

add_filter('woocommerce_login_redirect', 'wc_login_redirect');

function wc_login_redirect( $redirect_to ) {
     $redirect_to = 'https://www.example.com/';
     return $redirect_to;
}
27 lug 2015 11:57:53
Commenti

Per favore [modifica] la tua risposta e fornisci una spiegazione. Inserire uno snippet di codice senza spiegazione è una risposta di scarsa qualità.

Mayeenul Islam Mayeenul Islam
27 lug 2015 12:53:03