创建受用户名和密码保护的WordPress页面

时间:2018-03-20 作者:Neha Patel

我必须创建一个私人页面,只有拥有用户名和密码的用户才能看到该页面。

我可以创建一个用户名和密码保护的页面,现在用户是订阅者,所以默认情况下他们看不到私有页面。有没有办法让订阅者可以看到私人页面。

非常感谢。

1 个回复
SO网友:Trisha

考虑一个特定的模板来测试用户是否使用以下内容登录,怎么样

if ( is_user_logged_in() ) {
   // your code for logged in user 
  } else {
    // your code for logged out user (e.g. a "you must be logged in" message)
  }
您甚至可以添加一个自定义字段,用于指示相关页面对登录用户是私有的,然后在您的页面中添加。php模板在确定要使用哪个页面模板之前,先测试该字段值的存在性。。。。我对需要用户登录的页面做了类似的操作,效果很好。

这也消除了您为任何人提供查看页面的密码的需要-他们只需使用自己的凭据登录即可。

更新:我想我应该扩展我的答案,以帮助那些可能不熟悉如何使用自定义字段和模板限制内容的人,所以我要做的是:

我使用了令人惊叹的“高级自定义字段”插件(pro版本值得花费,但免费插件可以很好地实现这一目的)。https://wordpress.org/plugins/advanced-custom-fields/

在ACF插件的设置中,我创建了一个自定义字段,该字段是一个标记为“受限”的复选框并将其应用于所有页面。因此,当我创建或编辑任何页面时,如果我想将其限制为登录用户,我可以选中该框

我修改了我的股票页面。我的主题附带的php模板文件,用于检查此字段(它是否包含值,例如是否选中),如果答案是“是”,则我调用内容页受限模板,如果答案是“否”,则使用普通内容页模板-以下是我的代码:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $restrict = get_field(\'restricted\'); if($restrict) { get_template_part( \'content\', \'page-restricted\' ); } else { get_template_part( \'content\', \'page\' ); } endwhile; endif; ?>

<?php if ( !is_user_logged_in() ) { echo\'<div id="signupMssg">Please <a class="fancybox-inline" href="#fancyboxID-2">Login</a> or <a href="../Signup">Sign Up</a>\'; echo \'<div style="display:none;"><div id="fancyboxID-2">\'; echo do_shortcode(\'[displayLogin]\'); echo \'</div></div></div>\'; } else if ( is_user_logged_in() ) { // Follow the normal Page stuff here ?>

fancybox的东西就在那里,因为如果他们点击“登录”这个词,我会在弹出的覆盖图中显示登录表单。

我希望这能有所帮助,我发现这是一种限制内容的简单方法,比使用需要公共密码的“私人”页面效果更好。。。。

结束

相关推荐

Wp_lostpassword_url未转义

我有一个ajax登录表单,还有一个丢失的密码链接,可以通过wp_lostpassword_url() 作用当我验证我得到的页面时Error: & did not start a character reference. (& probably should have been escaped as &amp;.) 在线链接所在的位置。这能以某种方式解决吗?我已经激活了woocommerce,所以它会将我发送到woocommerce页面进行登录。我可以创建一个自定义函数,将用