web-dev-qa-db-ja.com

作成者ロールがカスタム投稿タイプのすべての投稿を編集できないようにする

著者ロールはその著者によって作成された投稿を編集することのみが許可されていると思いました。これは投稿とページで機能しますが、私はカスタム投稿タイプを作成し、作成者はその投稿タイプのすべての投稿を編集できます。作成者ロールを正常に動作させるために、カスタム投稿タイプに対して特別なことをする必要がありますか。

私は別の質問で見つけたこのコードを使ってみましたが、それは私のためにそれを修正しませんでした:

function to_parse_query_useronly( $wp_query ) {
    if ( strpos( $_SERVER[ 'REQUEST_URI' ], '/wp-admin/edit.php' ) !== false ) {
        if ( !current_user_can( 'publish_posts' ) ) {
            global $current_user;
            $wp_query->set( 'author', $current_user->id );
        }
    }
}
add_filter('parse_query', 'to_parse_query_useronly' );

ありがとうございました!

2
LBF

投稿タイプを登録するときは、希望する機能を宣言する必要があります。

こちらのJustinの記事は、カスタム投稿タイプに適した記事です。 http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

カスタム投稿タイプを登録するときは、これを投稿の標準機能に設定できます。

'capability_type'    => 'post',

またはページの標準機能であること。

'capability_type' => 'page',

または、グローバルコントロールを使用して独自の機能タイプを設定するか、特定の配列を介して特定のコントロールにアクセスします。

/* Global control over capabilities. */
'capability_type' => 'super_duper',

/* Specific control over capabilities. */
'capabilities' => array(
'edit_post' => 'edit_super_duper',
'edit_posts' => 'edit_super_dupers',
'edit_others_posts' => 'edit_others_super_dupers',
'publish_posts' => 'publish_super_dupers',
'read_post' => 'read_super_duper',
'read_private_posts' => 'read_private_super_dupers',
'delete_post' => 'delete_super_duper',
),
3
Monkey Puzzle