Как удалить кнопку “Добавить новый” в моем пользовательском типе записи?

Вопрос или проблема

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

Вот о чем я говорю:

вставьте описание изображения здесь

Есть идеи, как я могу это удалить?

Смотрите ниже:

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(); // Убирает элемент "Добавить" из панели инструментов

Заключение

Вы можете выбрать любой из предложенных методов, в зависимости от ваших потребностей. Метод с отключением возможности создания новых записей более изящный и предпочтительный, если вы не хотите скрыть элементы интерфейса, а просто предотвратить создание новых записей. Если у вас остались вопросы или нужна дополнительная помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...