问题描述

如何将请求特定页面/URL 的 non-logged 用户重定向到另一个页面/URL,并显示 「仅限成员」 的消息。我知道它很容易编码使用!is_user_logged_in() 函数,但我不知道如何编写它,因为我是一个新手的 WordPress 。小心告诉我的文件也放置代码。

最佳解决思路

这里有两个例子,您需要稍微修改才能满足您的具体需求。

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('add page slug or i.d here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/page/' );
    exit;
}

把它放在你的小孩主题功能文件中,并改变页面 i.d /slug 和重定向网址。

你也可以使用这样的代码:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

if ( is_page('slug') && ! is_user_logged_in() ) {

wp_redirect( 'http://www.example.dev/your-page/', 301 );
  exit;
    }
}

您可以将消息直接添加到页面,或者要显示所有未登录用户 add it to the code 的消息。

http://codex.wordpress.org/Function_Reference/wp_redirect

次佳解决思路

如果您没有告诉我们您想要显示什么和在哪里,我们怎么能告诉你放在哪里?整个帖子?网页?自定义页面部分?对不起… 我猜今天我的水晶球不是很好。

既然你是,我引用你:「一个新手的 wordpress」 你应该学习,而不是要求直接的答案。

至于您应该阅读参考文献 1 链接。这将告诉你你需要放入哪个文件。

至于如何做,你应该首先阅读参考链接 2 和 3 。

总体来说应该是这样的:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

当然上述代码需要进入循环。您可以将其构建为您想要的复杂或简单。例如,而不是简单的文本,如果没有登录,您可以显示整个注册表单,例如或 – 我建议 – 用户可以登录的分屏 (因为用户可以有一个帐户,但忘记登录) 或注册 (如果他没有) 。

  1. Template Hierarchy

  2. Conditional Tags

  3. The Loop

以下评论后添加:

要重新使用 headerwp_login_url – 再次检查参考文献 1 和 2 以下:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

参考:

  1. Header – PHP

  2. wp_login_url

第三种解决思路

您不能重定向到特定页面,但每个 non-logged-in 用户将被重定向到 Log-In 屏幕。

<?php auth_redirect(); ?>

WordPress 参考:auth_redirect()

只是提到另一个解决方案。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。