web-dev-qa-db-ja.com

カスタム投稿タイプの[新規追加]ボタンを削除するにはどうすればよいですか。

追加[カスタム投稿タイプ]機能を必要とするカスタム投稿タイプは多数ありますが、カスタム投稿タイプは "About"で、カスタムカスタム投稿タイプについては "新規追加"は不要です。だから私は "Add About"と書かれている一番上のボタンを削除したいです。

これが私の言っていることです。

enter image description here

どのように私はそれを削除することができますか?

7
Lucas Santos

以下を参照してください。

function disable_new_posts() {
// Hide sidebar link
global $submenu;
unset($submenu['edit.php?post_type=CUSTOM_POST_TYPE'][10]);

// Hide link on listing page
if (isset($_GET['post_type']) && $_GET['post_type'] == 'CUSTOM_POST_TYPE') {
    echo '<style type="text/css">
    #favorite-actions, .add-new-h2, .tablenav { display:none; }
    </style>';
}
}
add_action('admin_menu', 'disable_new_posts');
5
Helping Hands

より良い解決策は、custom_post_typeを作成する機能を無効にすることです。

register_post_type を呼び出すときは、単純に 'create_posts' => false、 をcapabilities配列に渡します。

$args = array(
        'label'               => __( 'Custom Post Type', 'text_domain' ),
        'description'         => __( 'Custom Post Type', 'text_domain' ),
        'labels'              => $labels,
        'supports'            => array( ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'map_meta_cap'        => true,
        'capability_type' => 'custom_post_type',
        'capabilities' => array(
            'create_posts' => false
        )
    );
    register_post_type( 'custom_post_type', $args );
23
TompaLompa

@ TompaLompaの回答が不完全だったので編集しました。 create_posts => falsetrueに設定されていない場合、map_meta_capを追加しても機能しません。

このパラメータを設定しない(またはfalseに設定する)と、投稿タイプの編集も無効になります。これは、あなたの投稿タイプを add AND edit にするために、各ユーザーロールにedit_post機能を追加する必要があるためです。

このパラメータを設定すると、WP内部デフォルトメタ機能処理が使用され、ロール機能をデフォルトのWPよりも細かく制御する必要がない場合に使用できます。

2
bynicolas

その後、 Add New を削除するだけで、custom_post_typeを使用していない場合は、'capability_type' => 'custom_post_type'を使用しないでください。このコードを削除したほうがいいでしょう。がんばろう :)

だから、デモは以下の通りです:

array(
'labels' => $member_labels,
'has_archive' => true,
'public' => true,
'hierarchical' => true, // like page
'rewrite' => array('slug' => 'member_pages'),
'supports' => array(
    'title',
    'editor',
    'excerpt',
    'custom-fields',
    'thumbnail',
    'page-attributes',
),
'taxonomies' => array('post_tag', 'cm_club'),
// 'capability_type' => 'custom_post_type',
'capabilities' => array(
    'create_posts' => false,
),
'map_meta_cap' => true,
)
0
Ni Xiaoni

私が感じた最良の方法は、add-admin-javascriptプラグインをインストールしてアクティブにしてから設定に進み、最後のボックスにこのコードを書くことです。

$('.wrap .wp-heading-inline').remove();
$('.wrap .page-title-action').remove();
$('#wp-admin-bar-new-content').remove();
0
Navesh Kintali