使WooCommerce页面仅适用于登录用户


12

我有一个使用WordPress的网站,以及一个使用WooCommerce的电子商务。我希望只有登录的用户才能看到我的商店(及其所有页面)。

通过用户访问管理器插件,我拒绝访问商店页面,但是直接链接到产品等。尽管用户未登录,但仍然可以访问该特定页面。

如果未尝试登录的用户尝试访问WooCommerce页面,如何将他们重定向到另一个页面?

Answers:


24

把它放在你的functions.php文件中:

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

它有什么作用?
我们检查未登录用户是否要查看WooCommerce页面,并将其重定向到我们的主页。


谢谢您的帮助。文件functions.php在我的主题文件夹中?我该如何从产品页面调出此功能?谢谢:-)
亚历山德罗(Alessandro)

非常感谢你。您的代码对我来说很好。非常感谢:)
Alessandro 2014年

1
确保您没有将任何woocommerce页面设置为主页,因为这样站点将无法再使用。
SPRBRN

7

我只是将重定向更改为

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

因此,如果未登录或注册,用户将在“我的帐户”页面上重定向。


2
这不是重定向到My Account页面的最佳方法。最好检索在WooCommerce设置中链接的“我的帐户”页面的永久链接。这样,无论何时更改永久链接,或者您有运行该永久链接的多语言站点,仍然可以正确检索。简而言之:最好不要对永久链接/段(或通常是URL)进行硬编码。更好的方法是:wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
Rens Tillmann'3

你代码丢失; 它结束了
user889030 '19

0

我会改成这个

wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) );

代替

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

2
您能否详细说明为什么会有帮助,以便其他人可以从您的答案中学到什么?
KrzysiekDróżdż
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.