WooCommerce sayfalarını yalnızca giriş yapan kullanıcılar için erişilebilir hale getirme


12

WordPress kullanan bir web sitem ve WooCommerce kullanan bir e-ticaretim var. Mağazamın (ve tüm sayfalarının) yalnızca giriş yapan kullanıcılar tarafından görülmesini istiyorum.

Via Kullanıcı Erişim Yöneticisi eklentisi, ben dükkanı sayfaya erişimi engellendi, ancak herhangi bir ürüne doğrudan bağlantıya vb bir kullanıcı oturum olmasa bile, yine de bu özel sayfasına erişebilirsiniz.

Oturum açmamış kullanıcıları bir WooCommerce sayfasına erişmeye çalışırlarsa başka bir sayfaya nasıl yönlendirebilirim?

Yanıtlar:


24

Bunu functions.phpdosyanıza koyun :

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

Bu ne işe yarıyor?
Giriş yapmamış bir kullanıcının bir WooCommerce sayfası görmek isteyip istemediğini kontrol eder ve onu ana sayfamıza yönlendiririz.


Yardımın için teşekkürler. Function.php dosya tema klasörümde ?? Ve bu işlevi ürün sayfasından nasıl hatırlayabilirim? Teşekkürler :-)
Alessandro

Çok teşekkür ederim. Kodun benim için iyi çalışıyor. Çok teşekkürler :)
Alessandro

1
Woocommerce sayfalarından hiçbirini ana sayfanız olarak ayarlamadığınızdan emin olun çünkü site artık çalışmaz.
SPRBRN

7

Yönlendirme ayarını yeni değiştirdim

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

bu yüzden kullanıcılar giriş yapmaz veya kayıtlı değilse "Hesabım" sayfasına yönlendirilir.


2
Sayfaya yönlendirmek için en iyi yöntem bu değildir My Account. WooCommerce ayarlarınızda bağladığınız Hesabım sayfasının kalıcı bağlantısını almak daha iyidir. Bu şekilde, kalıcı bağlantı değiştirildiğinde veya kalıcı bağlantıyı çalıştıran çok dilli bir siteniz varsa, yine de doğru şekilde alınır. Kısacası: Kalıcı bağlantıları / sümüklü böcekleri (veya genel olarak URL'leri) kodlamamak daha iyidir. Daha iyi bir yöntem:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann

kod eksik; biter
user889030

0

Bunu değiştirirdim

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

onun yerine

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

2
Diğer insanların cevabınızdan bir şeyler öğrenebilmesi için bunun neden yardımcı olacağını açıklayabilir misiniz?
Krzysiek Dróżdż
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.