Если я правильно понял, Вам нужны
произвольные типы записей и
произвольные таксономии.
Код для комментария:
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' );
Скриншот админки.