it-swarm.com.ru

Как я могу удалить кнопку "Добавить новый" в моем типе сообщения?

У меня есть много пользовательских типов записей, для которых требуется функция Добавить [пользовательский тип записи], но у меня есть собственный тип записи "О нас", и мне не нужно "Добавить новый" для пользовательского типа сообщения. Поэтому я хочу удалить кнопку сверху, которая говорит "Добавить о"

Это то, что я имею в виду:

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:

Просто передайте параметр 'create_posts' => false, в массиве возможностей при вызове register_post_type .

$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 => false не будет работать, если для map_meta_cap не установлено значение true.

Если вы не установите этот параметр (или не установите false), вы также отключите редактирование типа записи. Это связано с тем, что вам необходимо добавить возможность edit_post для каждой роли пользователя, чтобы добавить И редактировать тип вашего сообщения.

Установка этого параметра будет использовать WP внутреннюю обработку мета-возможностей по умолчанию и заставит его работать, если вам не требуется более тонкий контроль над возможностями ролей, чем стандартные WP.

2
bynicolas

Затем, если вы просто хотите удалить Добавить новый и вы не используете 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 и активировать его, затем перейти к настройкам и добавить javascript написать этот код в последнем окне

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