Как создать мета-окно категорий с иерархическими флажками на интерфейсе?
Мой веб-сайт позволяет публиковать сообщения пользовательского типа ("место").
Я хотел бы отобразить то же самое мета-поле "Категории", которое отображается на панели управления WordPress, когда вы добавляете или редактируете публикацию на веб-интерфейсе:
Это связано с тем, что мета-поле "Категории" или иерархические флажки - это просто лучший способ просмотра и редактирования категорий, к которым относится сообщение.
Как мне открыть мета-окно "Категории" на интерфейсе?
Я действительно знаю jQuery, так что чувствуйте свободно добавлять материалы jQuery, если таковые имеются. Я бы настоятельно предпочел подход, позволяющий воспроизвести то, что WordPress делает для добавления/редактирования сообщения в бэкэнде, вместо взлома с нуля.
1 answers
Попробуйте wp_terms_checklist()
/ wp_category_checklist
. Он выведет список флажков с именем post_category
.
Возможно, вам также потребуется включить исходный файл , поскольку он определен в файлах администрирования.
Или используйте специальный ходунки:
class MyCategoryWalker extends Walker_Category{
public function start_el(&$output, $term, $depth, $args){
$args = wp_parse_args(array(
'name' => 'my_category_input',
'checked' => array(),
), $args);
extract($args);
$checked = checked(in_array($term->term_id, $checked));
ob_start(); ?>
<li>
<input type="checkbox" <?php $checked; ?> id="category-<?php print $term->term_id; ?>" name="<?php print $name; ?>[]" value="<?php print $term->term_id; ?>" />
<label for="category-<?php print $term->term_id; ?>">
<?php print esc_attr($term->name); ?>
</label>
<?php // closing LI is added inside end_el
$output .= ob_get_clean();
}
}
Используйте его так:
wp_list_categories(array(
'walker' => new MyCategoryWalker(),
'name' => 'my_category_input', // name of the input
'selected' => array(2, 5, 10), // checked items (category IDs)
));