WordPress: добавьте настроенный менеджер категорий в редактор * PAGE * - PullRequest
0 голосов
/ 26 марта 2010

В WordPress редактор post содержит панель категорий, которая позволяет назначать категории сообщениям. Однако редактор page не имеет панели «Категории». Я уверен, что это сделано специально, но мне нужен измененный набор элементов категории, чтобы быть доступными для страниц.

Я обнаружил, что могу добавить строку кода ниже в файл functions.php моей темы, чтобы добавить селектор отсутствующих категорий в редактор страниц ...

add_action('admin_menu', 'my_post_categories_meta_box');
function my_post_categories_meta_box() {
    add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'page', 'side', 'core');
}

Однако я бы хотел указать категории, которые должны появиться в этом меню. Я не хочу, чтобы он перечислял все доступные категории, только те, которые я выбрал для включения. Это возможно?

Если нет, то как бы добавить виджет, который по сути делает то же самое (предоставляет список элементов с флажками рядом с ними)?

1 Ответ

1 голос
/ 07 апреля 2010

Лучший способ - создать свой собственный мета-блок в окне редактора, затем отфильтровать категории или определить, какие из них вы хотите отобразить вручную.

Чтобы получить массив категорий, просто используйте функцию 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'); ?>" />

Извините за количество кода, я старался максимально его уменьшить.

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...