如何在后端过滤帖子,以便登录用户只看到自己的帖子,而不看到列表中其他人的帖子
我的CPT声明:
$args = array(
\'labels\' => $labels,
\'description\' => \'Test plugin.\',
\'public\' => true,
\'menu_position\' => 10,
\'supports\' => array(\'title\', \'excerpt\', \'comments\', \'author\'),
\'has_archive\' => false,
\'menu_icon\' => "dashicons-admin-generic"
);
register_post_type(\'multi\', $args);
SO网友:Charles
如果我理解正确,您只想向用户显示自己的帖子(在后端)
我会使用如下所示的单独功能来完成。
通过更改功能,您可以决定哪些用户可以看到所有帖子,哪些用户不能看到
在下面的功能中,贡献者无法看到其他用户在后端的列表上发表文章。
(请备份functions.php
第一……)
添加此function
在您的功能中。php
/**
* Show only -own- Posts/CPT to user in the Back-end
*
* Codex links: {@link https://codex.wordpress.org/Plugin_API/Action_Reference/parse_query}
* {@link https://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table}
*
* @version Wordpress 4.6.1
*/
add_filter(\'parse_query\', \'wpse241099_display_own_post_only\' );
function wpse241099_display_own_post_only( $wp_query )
{
// Check if we are on the correct page (in Back-end)
if ( strpos( $_SERVER[ \'REQUEST_URI\' ], \'/wp-admin/edit.php\' ) !== false )
{
// Set capability
if ( !current_user_can( \'publish_posts\' ) )
{
global $current_user;
$wp_query->set( \'author\', $current_user->ID );
}
}
} // end function