按用户过滤仪表板自定义帖子列表

时间:2012-01-12 作者:Mario Peshev

我做了一些研究,但最终还是无法实现。

我有一个只能由新角色访问的自定义帖子类型。我想过滤帖子类型列表,以便每个用户只能看到自己的记录(因为作者用户只能看到自己的帖子)。我尝试过过滤parse\\u查询,但它只适用于主列表(仍然可以看到其他记录)。

为了防止恶意用户列出其他人的记录,应该使用哪个过滤器?

也尝试了pre\\u get\\u帖子,但我仍然可以看到其他用户的帖子。

对于每个用户的帖子对象的一般分离,哪个过滤器是正确的?

2 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

pre\\u get\\u posts正确。

来自的代码将阻止任何非管理员查看其他人的帖子。

http://blog.rutwick.com/display-only-the-posts-authored-by-the-current-wp-user-on-the-posts-page-in-the-back-end

要将其限制为仅1个帖子类型,您需要再添加一个条件并选中$typenow==“your\\u custom\\u post\\u type”:

add_action(\'pre_get_posts\', \'filter_posts_list\');
function filter_posts_list($query)
{
    //$pagenow holds the name of the current page being viewed
     global $pagenow, $typenow;  

    //$current_user uses the get_currentuserinfo() method to get the currently logged in user\'s data
     global $current_user;
     get_currentuserinfo();

        //Shouldn\'t happen for the admin, but for any role with the edit_posts capability and only on the posts list page, that is edit.php
        if(!current_user_can(\'administrator\') && current_user_can(\'edit_posts\') && (\'edit.php\' == $pagenow) &&  $typenow == \'your_custom_post_type\')
     { 
        //global $query\'s set() method for setting the author as the current user\'s id
        $query->set(\'author\', $current_user->ID);
        }
}

SO网友:heroj

这不是促销,但我用这个插件解决了它:https://www.role-editor.com/documentation/content-view-restrictions/

结束

相关推荐

Apply_Filters函数及其变量的说明

我正在学习如何使用PHP构建html表单,方法是以“simplr表单注册”插件为例。我正在查看以下代码:$form .= apply_filters(\'simplr-reg-instructions\', __(\'Please fill out this form to sign up for this site\', \'simplr-reg\')); 您能解释一下这里发生了什么吗?函数的作用是什么,为什么需要“simpr reg指令”和“simpr reg”?为什么这句话不能简单地说:$