2013-05-08 53 views
0

我已经问了几个问题试图解决这个简单的问题,但似乎没有工作。WordPress的安全方式有私人/公共帖子

什么是推荐私人/公共帖子的方式?我想拥有一个网站,如果作者/编辑/管理员登录每个私人帖子并且公开帖子是可查看/可搜索的。如果用户没有登录,只有公共职位可见。

我想过/尝试过这样做的很多方法。一种简单的方式,我使用WP_Query在登录/注销时使用自定义字段“Private”来包含/排除所有帖子。

虽然这工作得很好,我有两个问题,它有多安全?它需要一个自定义字段,当Wordpress已经有私人邮政功能。

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

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

有什么建议或帮助?有人必须做到这一点,而不需要自定义字段?

感谢

回答

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); 
+0

好的,这似乎工作得很好,谢谢。你知道是否可以使我的网站广泛吗?而不是将其添加到每个查询?如果这是有道理的。欢呼的输入 – invamped 2013-05-09 00:30:50

+0

我不知道它是否可以修改WP查询默认值以一种干净的方式,也许你可以问这里http://wordpress.stackexchange.com/ – RafH 2013-05-09 00:45:12

+0

好的再次感谢您的帮助。嗯,也许我可以将其添加到function.php? – invamped 2013-05-09 00:50:00

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这个代码粘贴。

+1

这显示了由当前作者编写的私人帖子,并允许作者在编辑屏幕中通过single.php查看私人帖子,但不会显示在头版循环中。我错过了什么?谢谢 – invamped 2013-05-09 00:42:25