Вопрос или проблема
У меня много пользовательских типов записей, которым нужна функция “Добавить [пользовательский тип записи]”, но у меня есть пользовательский тип записи “О нас”, и мне не нужно “Добавлять новый” к этому пользовательскому типу записи. Поэтому я хочу удалить кнопку сверху, которая говорит “Добавить О нас”.
Вот о чем я говорю:
Есть идеи, как я могу это удалить?
Смотрите ниже:
function disable_new_posts() {
// Скрыть ссылку на боковой панели
global $submenu;
unset($submenu['edit.php?post_type=CUSTOM_POST_TYPE'][10]);
// Скрыть ссылку на странице списка
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');
Более красивое решение — отключить возможность создания пользовательского типа записи:
Просто передайте параметр 'create_posts' => 'do_not_allow',
в массив возможностей при вызове register_post_type
.
$args = array(
'label' => __( 'Пользовательский тип записи', 'text_domain' ),
'description' => __( 'Пользовательский тип записи', '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,
'capabilities' => array(
'create_posts' => 'do_not_allow'
)
);
register_post_type( 'custom_post_type', $args );
Если вы просто хотите удалить Добавить новый и не используете custom_post_type
, вам не нужно использовать 'capability_type' => 'custom_post_type'
. Лучше всего удалить этот код. Удачи 🙂
Итак, демонстрация ниже:
array(
'labels' => $member_labels,
'has_archive' => true,
'public' => true,
'hierarchical' => true, // как страница
'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,
)
Отредактировал ответ @TompaLompa, так как он был неполным. Добавление create_posts => false
не сработает, если map_meta_cap
не установлен в true
.
Не установив этот параметр (или установив его в false
), вы также отключите редактирование типа записи. Это связано с тем, что вам нужно будет добавить возможность edit_post
для каждой роли пользователя, чтобы иметь возможность добавлять И редактировать ваш тип записи.
Установка этого параметра будет использовать стандартное внутреннее управление мета-возможностями WP и сделает так, что оно будет работать для вас, если вам не нужен более тонкий контроль над возможностями ролей, чем обычные возможности WP.
Лучший способ, как я думаю, — установить плагин add-admin-javascript и активировать его,
затем перейти в настройки и добавить javascript,
вставьте этот код в последнее поле:
$('.wrap .wp-heading-inline').remove();
$('.wrap .page-title-action').remove();
$('#wp-admin-bar-new-content').remove();
Ответ или решение
Чтобы удалить кнопку "Добавить новый" из вашего пользовательского типа записей в WordPress, вы можете воспользоваться несколькими методами. Вот полное руководство по каждому из них:
Метод 1: Скрытие кнопки через действия и стили
Вы можете скрыть кнопку "Добавить новый" с помощью функции admin_menu
. Вот пример кода, который вы можете добавить в файл functions.php
вашей темы:
function disable_new_posts() {
// Удаляем ссылку из бокового меню
global $submenu;
unset($submenu['edit.php?post_type=YOUR_CUSTOM_POST_TYPE'][10]); // Замените YOUR_CUSTOM_POST_TYPE на ваш тип записи
// Скрываем кнопку на странице списка
if (isset($_GET['post_type']) && $_GET['post_type'] == 'YOUR_CUSTOM_POST_TYPE') {
echo '<style type="text/css">
#favorite-actions, .add-new-h2, .tablenav { display:none; }
</style>';
}
}
add_action('admin_menu', 'disable_new_posts');
Метод 2: Отключение возможности создания новых записей
Еще один способ — предотвратить создание новых записей для вашего типа. Вы можете сделать это, добавив параметр 'create_posts' => 'do_not_allow'
в массив возможностей при регистрации вашего пользователя. Пример:
$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,
'capabilities' => array(
'create_posts' => 'do_not_allow'
),
);
register_post_type( 'your_custom_post_type', $args ); // Замените your_custom_post_type на ваш тип записи
Метод 3: Использование плагина для добавления пользовательского JavaScript
Если вы предпочитаете использовать JavaScript для удаления кнопки, вы можете установить плагин, который позволяет добавлять собственный JavaScript в админку. Например, используйте «Add Admin JavaScript». После активации плагина добавьте следующий код в раздел настроек:
$('.wrap .wp-heading-inline').remove(); // Убирает заголовок
$('.wrap .page-title-action').remove(); // Удаляет кнопку "Добавить новый"
$('#wp-admin-bar-new-content').remove(); // Убирает элемент "Добавить" из панели инструментов
Заключение
Вы можете выбрать любой из предложенных методов, в зависимости от ваших потребностей. Метод с отключением возможности создания новых записей более изящный и предпочтительный, если вы не хотите скрыть элементы интерфейса, а просто предотвратить создание новых записей. Если у вас остались вопросы или нужна дополнительная помощь, не стесняйтесь обращаться.