web-dev-qa-db-ja.com

自分のカスタム投稿タイプのみを表示するよう投稿者を制限しますか?

私たちの '投稿'タイプでは、私たちの貢献者は自分の投稿だけを見ることができます。ただし、カスタム投稿タイプの場合、投稿者は下書きを含むすべての投稿を見ることができます。カスタム投稿の表示を制限して、「投稿」タイプのように自分の投稿のみが表示されるようにする方法はありますか。

編集:多分私は私の問題についてそれほど明確ではなかった。投稿者にすべてのカスタムタイプ(ビデオ、画像など)を表示できるようにしたいのですが、各カスタムタイプ内では、自分の投稿だけを表示できるようにします。たとえば、CPT動画を見れば、他の人による投稿ではなく、自分が投稿した動画しか見ることができません。

4
user28330

あなたはアクションフック pre_get_posts を使う必要があります。

詳細についてはコメントを参照し、カスタム投稿タイプを自分の投稿タイプに変更してください。

add_action( 'pre_get_posts', 'filter_cpt_listing_by_author_wpse_89233' );

function filter_cpt_listing_by_author_wpse_89233( $wp_query_obj ) 
{
    // Front end, do nothing
    if( !is_admin() )
        return;

    global $current_user, $pagenow;
    get_currentuserinfo();

    // http://php.net/manual/en/function.is-a.php
    if( !is_a( $current_user, 'WP_User') )
        return;

    // Not the correct screen, bail out
    if( 'edit.php' != $pagenow )
        return;

    // Not the correct post type, bail out
    if( 'portfolio' != $wp_query_obj->query['post_type'] )
        return;

    // If the user is not administrator, filter the post listing
    if( !current_user_can( 'delete_plugins' ) )
        $wp_query_obj->set('author', $current_user->ID );
}

あなたはポストカウントが気づくでしょう All|Published|Drafts 修正する必要があります。
ここでの解決策 を参照してください。

7
brasofilo