woocommerce și is_user_logged_in() - redirecționare la pagina principală pentru utilizatorii nelogati

27 sept. 2012, 06:20:32
Vizualizări: 19.5K
Voturi: 2

Folosesc WooCommerce și doresc să redirecționez utilizatorii nelogați către pagina principală, dar am probleme în a determina unde ar trebui să implementez acest lucru.

Am cercetat și am aflat că pot folosi funcția is_user_logged_in() pentru a verifica dacă un utilizator este logat.

Am încercat să implementez în fișierul woocommerce/woocommerce-functions.php:

// Când permalink-urile implicite sunt activate, redirecționează pagina magazin către URL-ul arhivei tipului de 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;

dar pagina rămâne vizibilă

0
Toate răspunsurile la întrebare 3
1

În primul rând, niciodată nu modifica plugin-uri ale altor persoane sau fișierele de bază ale WordPress.

De asemenea, folosește acolade în loc de formatare frumoasă, deoarece formatarea frumoasă strică evidențierea codului în IDE, potrivirea acoladelor, verificatoarele de sintaxă și alte instrumente utile.

Așadar, pune acest cod:

// Când permalink-urile implicite sunt activate, redirecționează pagina magazinului către URL-ul arhivei tipului de postare
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();
}

Fie în:

  • partea de sus a fișierului functions.php
  • un plugin dedicat
  • apelul hook-ului Init
27 sept. 2012 15:59:44
Comentarii

mulțumesc pentru recomandare, voi încerca să adaug asta în functions.php

bugz bugz
27 sept. 2012 17:03:03
8

Vei dori să inserezi codul tău în partea de sus a șabloanelor de pagină pentru paginile Woo pe care dorești să le afecteze redirecționarea, în loc să-l pui în fișierul de funcții. De exemplu, dacă dorești să redirecționezi utilizatorii când încearcă să acceseze o pagină individuală de produs, ai putea să-l pui în partea de sus a fișierului plugins->woocommerce->templates->single-product.php.

Totuși, atunci când editezi șabloane, recomand să faci o copie și să o plasezi în directorul temei tale, astfel încât atunci când Woo se actualizează, să nu suprascrie modificările pe care le-ai făcut. Deci, pentru exemplul dat mai sus (aplicat pe tema mea), aș copia single-product.php și l-aș plasa în themes->agency, apoi aș face modificările în acel fișier. Tema ta va folosi întotdeauna acel fișier înaintea celui din directorul de șabloane Woo.

27 sept. 2012 15:29:13
Comentarii

mulțumesc, știi care pagină ar trebui modificată pentru a redirecționa utilizatorii care vizualizează pagina inițială a magazinului?

bugz bugz
27 sept. 2012 17:00:16

Deoarece pagina magazinului este de fapt un loop, ai putea adăuga un hook în fișierul functions.php. Copiază asta și spune-mi dacă funcționează. http://pastie.org/4830106. Am niște elemente ciudate pe pagina mea de magazin (pe scurt am șters-o), așa că nu pot să o testez eu. Dacă nu funcționează, o voi repara.

Kyle Kyle
27 sept. 2012 18:19:02

hmm după ce am adăugat asta în fișierul functions.php al temei mele, întregul site a încetat să funcționeze. trebuia să o adaug în fișierul de funcții al woocommerce?

bugz bugz
27 sept. 2012 21:10:49

Scuze pentru eroarea de sintaxă neglijentă, șterge asta și încearcă versiunea corectată http://pastie.org/4830960

Kyle Kyle
27 sept. 2012 21:17:03

OK, am testat codul și cu siguranță funcționează: http://pastie.org/4831059. Copiază-l în fișierul functions.php

Kyle Kyle
27 sept. 2012 21:36:55

bugz - A funcționat soluția?

Kyle Kyle
28 sept. 2012 00:22:13

Dacă a funcționat, poți verifica acest răspuns..

Kyle Kyle
28 sept. 2012 18:11:27

Nu sunt de acord cu inserarea acelui cod în partea de sus a șabloanelor de pagină pentru paginile Woo. Ar trebui folosit template_redirect action hook.

cybmeta cybmeta
8 aug. 2015 17:15:55
Arată celelalte 3 comentarii
1

Folosește codul din 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 iul. 2015 11:57:53
Comentarii

Vă rugăm să [editați] răspunsul dumneavoastră și să oferiți o explicație. A posta un fragment de cod fără explicații nu reprezintă un răspuns bun.

Mayeenul Islam Mayeenul Islam
27 iul. 2015 12:53:03