Как создать мета-окно категорий с иерархическими флажками на интерфейсе?


Мой веб-сайт позволяет публиковать сообщения пользовательского типа ("место").

Я хотел бы отобразить то же самое мета-поле "Категории", которое отображается на панели управления WordPress, когда вы добавляете или редактируете публикацию на веб-интерфейсе:
backend categories meta box

Это связано с тем, что мета-поле "Категории" или иерархические флажки - это просто лучший способ просмотра и редактирования категорий, к которым относится сообщение.

Как мне открыть мета-окно "Категории" на интерфейсе?

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

Author: brasofilo, 2012-10-01

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)
));
 3
Author: onetrickpony, 2012-10-01 12:27:02