Лучший способ - создать свой собственный мета-блок в окне редактора, затем отфильтровать категории или определить, какие из них вы хотите отобразить вручную.
Чтобы получить массив категорий, просто используйте функцию wordpress ' get_categories , чтобы получить массив категорий, затем, если вы хотите удалить некоторые из опций, просто unset их из этот массив.
Это краткая выдержка из того, что я поместил в мой functions.php, по сути, это связано с моим собственным php-файлом, который содержал код для выбора категории, а затем ее сохранения.
Сначала будет показано, как создать пользовательский раздел редактирования.
add_action('admin_menu', 'custom_admin');
/* Adds a custom section to the "side" of the post edit screen */
function custom_admin() {
add_meta_box('category_selector', 'Settings', 'category_custom_box', 'post', 'side', 'low');
/* prints the custom field in the new custom post section */
function category_custom_box() {
//get post meta values
global $post;
//$currentCat gets the pages current category id
$currentCat = wp_get_post_categories($post->ID);
//Do your printing of the form here.
}
А затем, чтобы сохранить категорию, создайте новую функцию и добавьте ее в хук 'save_post'.
/* when the post is saved, save the custom data */
function save_postdata($post_id) {
// verify this with nonce because save_post can be triggered at other times
if (!wp_verify_nonce($_POST['customCategory_noncename'], 'customCategory')) return $post_id;
// do not save if this is an auto save routine
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;
//get the category and set it
$custom_category = $_POST['custom_category'];
wp_set_post_categories($post_id, array($custom_category));
...
}
Одноразовое значение - это просто случайно сгенерированная строка, чтобы проверить, что сеанс действителен, избегая параллелизма, чтобы заставить его просто добавить это в вашу форму,
<input type="hidden" name="customCategory_noncename" id="customCategory_noncename" value="<?= wp_create_nonce('customCategory'); ?>" />
Извините за количество кода, я старался максимально его уменьшить.
Надеюсь, это поможет:)