Как программно лучше организовать меню пользовательских типов записей?
В проекте, который я унаследовал, используется дюжина пользовательских типов записей. Проблема в том, что все они отображаются в боковом меню админ-панели отдельно. Это не очень аккуратно. Есть ли плагин, который позволит мне сделать их подпунктами родительского меню, или существует ли способ программно отредактировать functions.php моей темы, чтобы организовать их как подменю?

В функции для регистрации нового пользовательского типа записи можно установить этот CPT как подменю к существующему пункту меню. Используйте параметр show_in_menu
Пример:
register_post_type(
'issue',
apply_filters( 'wpit_register_issue_post_type',
array(
'labels' => $issue_labels,
'rewrite' => $issue_rewrite,
'supports' => $issue_supports,
'taxonomies' => $issue_taxonomies,
'menu_position' => 5,
'public' => true,
'show_ui' => true,
'show_in_menu' => 'edit.php', // Указывает, что CPT будет подменю пункта "Записи"
'can_export' => true,
'capability_type' => 'post',
'query_var' => true
)
)
);
Строки для пунктов меню можно найти при наведении курсора, например upload.php
соответствует пункту Медиафайлы.

Я использовал этот удобный генератор для создания Пользовательского типа записи, затем установил бесплатный плагин Admin Menu Editor и создал пользовательское меню с названием "Управление" и слагом/хуком "mgmt". После этого всё, что мне нужно было сделать в моём автоматически сгенерированном коде пользовательского типа записи — это добавить строку 'show_in_menu' => 'mgmt',
, и, конечно же, всё заработало! Большое спасибо!

Да, я не всегда могу доверять генераторам в интернете, поэтому мне нужно создать собственный PHP-скрипт, который будет делать то же самое. Кроме того, довольно легко использовать функцию add_menu_page()
для создания меню "Управление" вместо использования Admin Menu Editor.
