@VPank
Бессмертие ради знаний. Знания ради бессмертия.

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

Пришел к выводу, что реализовывать большинство вещей лучше сразу через создание плагинов. Начал изучать вопрос и застрял на такой теме:

Я создал главную страницу плагина через add_menu_page и так же создал подменю add_submenu_page. Обе функцию отображаются в админке, но мне нужно создать страницу по типу произвольных типов записи, где я бы смог создавать новые элементы и на которой они бы отображались и с ними можно было работать в дальнейшем. Из того, что я смог понять сам, такого вида страницы работают через GET если я не ошибаюсь (смотрел на примере создания меток в записи и изменения строки url) то-есть как я понимаю, просто
идет вывод того, что просят и никакой стандартной функции для лепки таких страничек у WP нет и всё делается через php обработку?
  • Вопрос задан
  • 486 просмотров
Пригласить эксперта
Ответы на вопрос 2
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
Если я правильно понял, Вам нужны произвольные типы записей и произвольные таксономии.

Код для комментария:
add_action('init', 'register_posttype');
function register_posttype() {
        $labels = array(
            'name' => __('Shortcodes', 'dco-sm'),
            'singular_name' => __('Shortcode', 'dco-sm'),
            'menu_name' => __('Shortcodes', 'dco-sm'),
            'all_items' => __('DCO Shortcodes Menu', 'dco-sm'),
            'add_new' => __('Add New', 'dco-sm'),
            'add_new_item' => __('Add New Shortcode', 'dco-sm'),
            'edit' => __('Edit'),
            'edit_item' => __('Edit Shortcode', 'dco-sm'),
            'new_item' => __('New Shortcode', 'dco-sm'),
            'view' => __('View', 'dco-sm'),
            'view_item' => __('View Shortcode', 'dco-sm'),
            'search_items' => __('Search Shortcode', 'dco-sm'),
            'not_found' => __('No Shortcodes found', 'dco-sm'),
            'not_found_in_trash' => __('No Shortcodes found in Trash', 'dco-sm'),
        );

        $args = array(
            'labels' => $labels,
            'description' => __('Custom post type for DCO Shortcodes Menu', 'dco-sm'),
            'public' => false,
            'show_ui' => true,
            'show_in_rest' => false,
            'has_archive' => false,
            'show_in_menu' => 'myplugin-admin.php',
            'show_in_admin_bar' => false,
            'exclude_from_search' => false,
            'capability_type' => 'post',
            'map_meta_cap' => true,
            'hierarchical' => false,
            'rewrite' => false,
            'query_var' => false,
            'supports' => array('title'),
        );
        register_post_type('dco_shortcode', $args);
    }

function wpdocs_register_my_custom_menu_page() {
    add_menu_page(
        __( 'Custom Menu Title', 'textdomain' ),
        'custom menu',
        'manage_options',
        'myplugin-admin.php',
        '',
        plugins_url( 'myplugin/images/icon.png' ),
        6
    );
}
add_action( 'admin_menu', 'wpdocs_register_my_custom_menu_page' );


Скриншот админки.
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Ну вы либо через Custom Post Type / Custom Taxonomy работайте, с их родными страницами и UI, либо делаете свои страницы и строите свои таблицы с помощью класса WP_List_Table. Зачем городить гибрид носорога и бегемота? Или объясните конкретный use case вашего плагина, потому что мне кажется, что вы все-таки что-то делаете неправильно из-за недостаточного понимания ядра WP.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы