如何防止缓存wp_reDirect?

时间:2021-11-11 作者:Ben Aldrich

我正在进行多站点安装,其中一个特定站点的访问权限仅限于已登录并具有特定用户元集的用户(key=“cr\\u access”,val=“Yes”)。如果用户未登录,或该元密钥未设置为;“是”;,然后,应将它们重定向到指定的url。

重定向工作正常,但似乎正在缓存。如果用户在登录之前尝试访问某个页面,然后登录并重试,则仍会将其重定向到设置的url。如果清除页面和对象缓存,则用户可以访问这些页面。首先,我如何防止它被缓存?

这是我的代码:

function hwnycr_redirect(){

//only redirect for blog id 10, non-admin, and exclude home/login pages
if (!is_front_page() && !current_user_can( \'edit_posts\' ) && get_current_blog_id() == 10 && get_the_ID() <> 13) {

    if(!is_user_logged_in()) {

      wp_redirect(\'https://example.com\');
      exit();

    } else {

      $current_user = wp_get_current_user();
      $cr_access = get_user_meta($current_user->ID, \'cr_access\', true);

      if ($cr_access !== "Yes") {

        wp_redirect(\'https://example.com\');
        exit();

      }

    }
  }
}

add_action( \'template_redirect\', \'hwnycr_redirect\',1);

1 个回复
SO网友:Squivo

几个月来我一直在用头撞墙。解决方法是将所有重定向帖子设置在一个公共slug下,并让WPEngine强制该slug(类别)下的所有URL从不缓存。

相关推荐

重定向到/wp-admin/edit.php,而不是wp_reDirect url

我正在尝试使用带有参数的链接在管理编辑帖子页面上更改自定义帖子类型。问题是当我试图重定向到没有这些自定义参数的页面时,谢谢wp_redirect().这是我在类中的代码: add_action(\'admin_init\',array( $this, \'foo_actions\' ) ); function foo_actions(){ if( isset( $_GET[\'foo_action\'] ) ){