it-swarm.xyz

Пользовательский тип сообщения - раскрывающееся меню таксономии?

Я создал собственный тип записи и добавил различные мета-поля/поля к этому типу записи. Все работает отлично, за исключением одного элемента ...

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

Идея здесь состоит в том, чтобы позволить администраторам добавлять элементы таксономии, которыми можно управлять централизованно, однако, чтобы конкретный пост был связан только с одной таксономией.

Более того, я бы предпочел просто добавить этот выпадающий список в один из моих существующих мета-блоков.

У кого-нибудь есть пример кода, который позволил бы мне выполнить эту задачу?

5
NetConstructor.com

Я ответил на этот вопрос в другом посте: Сохранение условий таксономии

1
NetConstructor.com

Вот как я это сделал.

<?php $tax = get_object_taxonomies('TAXONOMY_NAME');
    $taxterms = get_terms( $tax, 'orderby=count&offset=1&hide_empty=0&fields=all' );
?>
<select name='tax' id='tax'>
    <option value='' <?php if (!count( $names )) echo "selected";?>>Select Term</option>
    <?php 
    foreach ( $taxterms as $term ) { 
        echo '<option value="' . $term->slug . '" selected>' . $term->name . '</option>',"\n"; 
    } ?>
</select>
4
jaredwilli

У меня нет кода для этого, но он должен быть простым: создайте выпадающий список с именем tax_input[your_taxonomy_name], где значения - это id, если ваша таксономия иерархическая (как категории), и значения, если нет (например, теги). Если вы используете это имя, я думаю, что оно сохраняется автоматически, без дополнительного кода от вас. Вы можете создать раскрывающийся список с помощью функции wp_dropdown_categories, передав опцию selected с термином таксономии, который следует выбрать. Функция обратного вызова, которая создает мета-поле, получает параметр $post, поэтому вы можете получить текущий термин таксономии оттуда.

Чтобы отключить мета-поле, которое обычно добавляется, вы можете установить для show_ui значение false при создании таксономии или удалить мета-поле до его отрисовки (я думаю, что ловушка add_meta_boxes - хорошее место). Он будет иметь идентификатор tagsdiv-your_taxonomy_name, если он не является иерархическим, или your_taxonomy_namediv, если он есть.

1
Jan Fabry