将显示帖子限制为海报本身(在后端)

时间:2016-09-30 作者:user3779045

如何在后端过滤帖子,以便登录用户只看到自己的帖子,而不看到列表中其他人的帖子

我的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);

1 个回复
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

相关推荐

GET_POSTS查询大约需要40秒来执行

我在get\\u帖子中有一个元查询,它需要花很长时间才能完成。它工作得很好,但只是时间太长了。我有一个名为event. 在每个event 发布后,有自定义元数据:post\\U sort\\U日期(事件日期YmdHis 格式,用于排序)我需要做的是获取下一个事件,该事件相对于$year 和$month 变量。所以如果$year = 2021 和$month = 10 (2021 10月)然后应该在2021 11月或之后找到第一个事件。我下面的查询很好,但很慢。执行大约需要40秒,我不知道为什么。$next