按用户角色限制对帖子/页面的访问

时间:2012-08-02 作者:Demilio

我正在寻找一种通过用户角色保护内容的方法。

示例:

您必须注册才能查看帖子(前端)。

如果用户是订阅者,他可以阅读帖子1、2和3,但如果用户是投稿者,他可以查看帖子1、2、3和4、5、6。。。

有人知道我怎么做吗?

3 个回复
最合适的回答,由SO网友:Vince Pettit 整理而成

虽然我没有亲自使用过,但您可能正在查看一个插件like this

似乎提供了上面所要求的所有功能。

SO网友:amit

您可以使用这些条件仅向具有角色的登录用户显示私人帖子contributor. 现在你只需要发帖子private 使投稿人可以使用该帖子。

<?php 
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        $private = get_post_custom_values("private");
        if (isset($private[0]) && $private == "true") {

            if ( current_user_can( \'contributor\' ) ) { //passing role to it may sometime not work
            the_title();
            the_content();
            } else {            // text to show instead the post
                echo \'this post is private, only contributor can view it\';
            }

        } else {        // this is visible to all
            the_title();
            the_content();
        }

    endwhile; 
    endif; 
?>

SO网友:Zohair Baloch

要实现这样的效果,您可以将一些帖子设置为私有并仅向登录用户显示,首先您需要添加一个自定义字段,您可以将其命名为“私有”,并将其值设置为“真”。然后添加并用以下代码段替换默认WP循环:

    <?php if (have_posts()) : while (have_posts()) : the_post();

    $private = get_post_custom_values("private");
    if (isset($private[0]) && $private == "true") {
        if (is_user_logged_in()) {
            // Display private post to logged user
        }
    } else {
        // Display public post to everyone
    }

endwhile; endif; ?>

结束

相关推荐

如何提高这个QUERY_POSTS循环的性能呢?

我创建了一个WordPress页面模板,为我网站上的某些WordPress帖子构建一个定制的XML提要。具体来说,页面模板呈现XML,并且仅包括某些自定义帖子类型,并且仅当这些帖子包含特定元数据时。我正在使用这些数据将WordPress内容提供给iOS应用程序。它似乎工作得很好;然而,来自服务器的响应时间各不相同,并且经常失败。我的托管公司(MediaTemple)建议我可以通过提高数据库查询的效率来提高性能。这种查询有没有标准的优化提示?<?php $numposts = -1;