我通过登录用户限制了WordPress。是否可以排除页面?

时间:2014-08-22 作者:Neil

以下是我限制wordpress网站的代码:

function restrict_access_if_logged_out(){
  if (!is_user_logged_in() && !is_home()){
    $redirect = home_url() . \'/wp-login.php?redirect_to=\' . esc_url($_SERVER["HTTP_HOST"] . urlencode($_SERVER["REQUEST_URI"]));
    wp_redirect( $redirect );
    exit;
  }
}
add_action( \'wp\', \'restrict_access_if_logged_out\', 3 );
现在我想为URL添加一个例外:example。com/主页。

2 个回复
最合适的回答,由SO网友:Neil 整理而成

我想限制我的网站,除了一个特定的页面。这是我的解决方案:

function restrict_access_if_logged_out(){
  global $wp;
  if (!is_user_logged_in() && !is_home() && ($wp->query_vars[\'pagename\'] != \'name-of-page\') ){
    $redirect = home_url() . \'/wp-login.php?redirect_to=\' . esc_url($_SERVER["HTTP_HOST"] . urlencode($_SERVER["REQUEST_URI"]));
    wp_redirect( $redirect );
    exit;
  }
}
只有我添加了以下内容:&& ($wp->query_vars[\'pagename\'] != \'name-of-page\') in IF子句和全局变量$wp 用于排除特定页面。当页面为“页面名称”时,此方法避免重定向。

我的灵感here.

感谢@PieterGoosen在your post. :)

SO网友:Brad Dalton

function restrict_access_if_logged_out(){
  if (!is_user_logged_in() || !is_home()){
    $redirect = home_url() . \'/wp-login.php?redirect_to=\' . esc_url($_SERVER["HTTP_HOST"] . urlencode($_SERVER["REQUEST_URI"]));
    wp_redirect( $redirect );
    exit;
  }
}
add_action( \'wp\', \'restrict_access_if_logged_out\', 3 );
而不是(&&;将| |与条件标记一起使用。

结束

相关推荐

如何从另一个PHP函数引用/Echo变量

我已经成功地为我的博客帖子设置了一个PHP函数,以创建一个快捷码,自动显示/设置YouTube视频的iFrame标记的样式,并将持续时间和视图计数直接拉到下面。我现在只想在主页/列表页上显示视频的视图计数和持续时间值(通过loop.php),但很难确定合适的php代码来实现这一点。以下是我在post视图中成功使用的函数:add_shortcode(\'yt\', \'getYoutubeDetails\'); function getYoutubeDetails($atts) {