WooCommerce 如何为未登录用户执行重定向

WooCommerce how to perform a redirection for not logged in users

我需要为我的 WordPress 网站上所有未登录的用户重定向。

所有这些都应该每次都被重定向到登录站点。这样没有登录的任何人都无法访问该站点。重要的是,我进行此重定向是因为我有一个 API 也需要访问该站点,如果我用 .htaccess 执行此操作 API 没有任何访问权限信息。

我使用了以下 PHP 代码:

add_action('template_redirect','woo_check_loggedin');
function woo_check_loggedin(){

      if(!is_user_logged_in() && !is_page(lost-password) ){
          wp_redirect("https://example.com/wp-login.php");
          exit;
      }
 
   }

但这只在我转到“example.com”时有效。当我直接输入 URL "example.com/shop" 你仍然可以访问该站点。我怎样才能避免这种情况?

您可以使用 wp 全局变量的 request 属性 和 wp_login_url 函数。

add_action('template_redirect', 'woo_check_loggedin');

function woo_check_loggedin()
{
    global $wp;

    if (
        !is_user_logged_in() 
        && 
        'my-account/lost-password' != $wp->request
       ) 
      {
        wp_safe_redirect(wp_login_url(get_permalink()));
        exit;
      }
}

这个答案已经在 woo 6.1 上测试过并且有效!

Woommerce 上重定向的相关答案: