web-dev-qa-db-ja.com

カスタム投稿の種類をサイト管理者の役割のみに制限する

このカスタム投稿タイプを管理者以外のユーザーのダッシュボードに表示しないようにするにはどうすればよいですか。

/* Add Websites Custom Post Type */
add_action( 'init', 'create_website_type' );
function create_website_type() {

    register_post_type( 'website',
        array(
            'labels' => array(
                'name' => __( 'Websites' ),
                'singular_name' => __( 'Website' ),
                'add_new' => __( 'Add New Website' ),
                'add_new_item' => __( 'Add New Website' ),
                'edit' => __( 'Edit Website' ),             
                'edit_item' => __( 'Edit Website' ),                
                'new_item' => __( 'Add New Website' ),              
                'view' => __( 'View Website' ),         
                'view_item' => __( 'View Website' ),                    
                'search_items' => __( 'Search Websites' ),  
                'not_found' => __( 'No Websites Found' ),
                'not_found_in_trash' => __( 'No Websites found in Trash' ),                                         
            ),
            'description' => __('Websites to be shown in Resources section.'),
            'public' => true,
            'show_ui' => true,
            'publicly_queryable' => true,
            'exclude_from_search' => false,
            'menu_position' => 20,
            'supports' => array('title', 'editor'),
            'can_export' => true        
        )
    ); 
    remove_post_type_support('website','editor'); 
}
15
urok93

register_post_type()は引数にパラメータcapabilitiesを受け入れます。可能な値についてはget_post_type_capabilities()を参照してください。コメントから:

デフォルトでは、capabilities配列の一部として7つのキーが受け入れられます。

  • edit_postread_post、およびdelete_postはメタ機能であり、一般にコンテキストに応じて対応するプリミティブ機能にマッピングされます。これは編集中の投稿、読み取りまたは削除されている投稿、およびチェックされているユーザーまたはロールです。したがって、これらの機能は通常、ユーザーまたはロールに直接付与されません。

  • edit_posts - この投稿タイプのオブジェクトを編集できるかどうかを制御します。

  • edit_others_posts - 他のユーザーが所有するこのタイプのオブジェクトを編集できるかどうかを制御します。投稿タイプが著者をサポートしていない場合、これはedit_postsのように動作します。
  • publish_posts - この投稿タイプの公開オブジェクトを制御します。
  • read_private_posts - プライベートオブジェクトを読み込めるかどうかを制御します。

これら4つの基本機能は、さまざまな場所でコアチェックされます。コアで直接参照されていない他の7つの基本機能もあります。ただし、map_meta_cap()では、前述の3つのメタ機能を使用して、コンテキストに応じてユーザーまたはロールに対してチェックする必要がある1つ以上の基本機能に変換します。 。

  • read - この投稿タイプのオブジェクトを読み込めるかどうかを制御します。
  • delete_posts - この投稿タイプのオブジェクトを削除できるかどうかを制御します。
  • delete_private_posts - プライベートオブジェクトを削除できるかどうかを制御します。
  • delete_published_posts - 公開オブジェクトを削除できるかどうかを制御します。
  • delete_others_posts - 他のユーザーが所有しているオブジェクトを削除できるかどうかを制御します。投稿タイプが著者をサポートしていない場合、これはdelete_postsのように動作します。
  • edit_private_posts - プライベートオブジェクトを編集できるかどうかを制御します。
  • edit_published_posts - 公開されたオブジェクトを編集できるかどうかを制御します。

これらの追加機能はmap_meta_cap()でのみ使用されています。したがって、投稿タイプが'map_meta_cap'引数をtrueに設定して登録されている場合にのみデフォルトで割り当てられます(デフォルトはfalse)。

あなたの登録引数に以下を追加してください:

'capabilities' => array(
    'edit_post'          => 'update_core',
    'read_post'          => 'update_core',
    'delete_post'        => 'update_core',
    'edit_posts'         => 'update_core',
    'edit_others_posts'  => 'update_core',
    'delete_posts'       => 'update_core',
    'publish_posts'      => 'update_core',
    'read_private_posts' => 'update_core'
),
11
fuxia