Как добавить в админке своего сайта пункт меню для создания кастомных постов?

Как можно добавить создание кастомных постов в пункт меню, который я создал с помощью функции add_menu_page в админке?
Изображение к вопросу
Изображение к вопросу
  • 31 января 2024 г. 10:48
Ответы на вопрос 2
Для добавления пункта меню в админ-панели WordPress для создания и управления кастомными типами записей ("custom post types"), вам нужно сначала зарегистрировать новый тип записи с помощью функции `register_post_type()`. Это обычно делается в вашем теме или плагине в хуке `init`.

Код для регистрации нового типа записи может выглядеть примерно так:

```php
function my_custom_post_type() {
    $args = array(
        'public' => true,
        'label'  => 'Мои кастомные посты',
        'supports' => array('title', 'editor', 'thumbnail')
        // ... дополнительные параметры
    );
    register_post_type('my_custom_post_type', $args);
}
add_action('init', 'my_custom_post_type');
```

После того как вы зарегистрировали свой кастомный тип записи, он автоматически должен появиться в админ-панели. Однако, если вы хотите добавить его в собственное меню, созданное с помощью `add_menu_page()`, вам нужно будет использовать функцию `add_submenu_page()` и указать соответствующий `post_type` в URL.

Например, так можно добавить подменю для кастомного типа записи:

```php
function my_custom_menu_page() {
    // Создание нового главного меню
    add_menu_page(
        'Моё специальное меню', // название страницы
        'Специальное меню',     // название меню
        'manage_options',       // capability
        'my-top-level-slug',    // menu_slug
        'my_custom_menu_page_callback' // функция отображения содержимого страницы
    );

    // Добавление подменю для кастомного типа записи
    add_submenu_page(
        'my-top-level-slug',                    // parent_slug
        'Добавить новый кастомный пост',        // page_title
        'Добавить новый',                       // menu_title
        'manage_options',                       // capability
        'post-new.php?post_type=my_custom_post_type' // menu_slug
    );
}
add_action('admin_menu', 'my_custom_menu_page');

function my_custom_menu_page_callback(){
    echo '<h1>Добро пожаловать в специальное меню</h1>';
    // Содержимое вашей основной страницы меню
}
```

В приведенном примере создается новый пункт верхнего уровня в меню админ-панели, а затем к нему добавляется подменю, которое перенаправляет пользователя на страницу для добавления нового кастомного поста. Значение `menu_slug` - это URL к редактору записей для указанного типа записи.

Обратите внимание, что вам необходимо заменить `my_custom_post_type` на имя вашего кастомного типа записи. Используйте правильные значения для `capability`, чтобы контролировать доступ к этим меню в зависимости от роли пользователя в WordPress.
На странице меню открыть настройки экран и включить отображение кастномного типа. 
При условии, что при создании кастомного типа не была отключена эта возможность.
Похожие вопросы