【问题标题】:Wordpress secure way to have Private/Public postsWordpress 拥有私人/公共帖子的安全方式
【发布时间】:2013-05-03 08:37:30
【问题描述】:

我已经问了几个问题试图解决这个简单的问题,但似乎没有任何效果。

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

我已经考虑/尝试了多种方法。一种简单的方法,我使用 WP_Query 在登录/注销时包含/排除所有带有自定义字段“私人”的帖子。

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

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

使用 wordpress 内置函数是我的首选方法,但无法使其正常工作。

有什么建议或帮助吗?一定有人在不需要自定义字段的情况下做到了这一点?

谢谢

【问题讨论】:

    标签: wordpress security permissions user-roles


    【解决方案1】:

    您不需要使用元字段来获取私人帖子,它在 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);
    

    【讨论】:

    • 好的,是的,这似乎也很好用,谢谢。你知道有没有办法让这个网站更广泛?而不是将其添加到每个查询中?如果这有意义的话。为输入欢呼
    • 我不知道是否可以以干净的方式修改WP Query默认值,也许你可以在这里问wordpress.stackexchange.com
    • 好的,再次感谢您的帮助。嗯,也许我可以将它添加到 function.php?
    【解决方案2】:

    我认为最适合您的情况是使用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 中。

    【讨论】:

    • 这显示当前作者撰写的私人帖子,并允许作者在编辑屏幕和single.php中查看私人帖子,但不会显示在首页循环中。我错过了什么?谢谢
    猜你喜欢
    • 2018-06-12
    • 2019-05-28
    • 2012-01-12
    • 1970-01-01
    • 2019-06-24
    • 2016-05-10
    • 2014-09-14
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多