Wordpress安全的方式有私人/公共职位

时间:2013-05-08 23:52:40

标签: wordpress security permissions user-roles

我已经问过几个试图解决这个简单问题的问题,但似乎没什么用。

推荐私人/公共职位的方式是什么?我希望有一个网站,如果作者/编辑/管理员登录每个私人帖子和公共帖子是可见/可搜索的。如果用户未登录公共帖子,则可以查看。

我已经考虑过/尝试过多种方式。我通过这种方式实现了一种简单的方法,使用WP_Query来包含/排除所有带有自定义字段的帖子" Private"登录/退出时。

虽然这很好但我有两个问题,它有多安全?当Wordpress已经具有私人帖子功能时,它需要一个自定义字段。

我尝试过的另一种方法是使用内置私人帖子功能的Wordpress,但我无法将私人帖子显示在前端。它们出现在编辑屏幕中,显示允许的用户和管理员的循环(前端),但不是编辑或作者....

使用wordpress内置函数是我的perferrred方法,但不能让它正常工作。

任何建议或帮助?有人必须这样做而不需要自定义字段吗?

谢谢

2 个答案:

答案 0 :(得分:0)

你不需要使用元字段来获取私人帖子,它可以在wp查询post_status参数中找到。

$args = array( 'post_status' => array( 'publish' ) ); // regular users
if ( is_user_logged_in() ) {
  // signed in users
  $args['post_status'][] = 'private';
}

$query = new WP_Query( $args);

答案 1 :(得分:0)

我认为最适合您的是WordPress capabilities。如果登录,编辑者已经能够在前端查看私人帖子/页面(因为他们具有read_private_posts能力)。

以下是您如何通过author用户角色查看私人帖子/页面的示例。

function so0805_init_theme_add_capabilities(){
    /* allow authors to view private posts and pages */
    $role_author = get_role('author');
    $role_author->add_cap('read_private_pages');
    $role_author->add_cap('read_private_posts');

}
add_action('init', 'so0805_init_theme_add_capabilities');

将此代码粘贴到主题的functions.php内。