如何在前端制作一个带有分层复选框的分类Meta Box?

时间:2012-10-01 作者:ericn

我的网站允许用户发布自定义帖子类型(“地点”)的帖子。

当您在前端添加或编辑帖子时,我想显示与WordPress仪表板中相同的“类别”元框:
backend categories meta box

这是因为“类别”元框或层次复选框是查看和编辑帖子所属类别的最佳方式。

如何在前端设置“类别”元框?

我确实了解JQuery,所以如果有JQuery的东西,请随意添加。我强烈希望采用一种方法来复制WordPress在后端添加/编辑帖子的功能,而不是从头开始的黑客攻击。

1 个回复
最合适的回答,由SO网友:onetrickpony 整理而成

尝试wp_terms_checklist() / wp_category_checklist. 它将输出一个名为post_category.

您可能需要包括source 文件,因为它是在管理文件中定义的。

或使用自定义助行器:

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)
));

结束

相关推荐

更改CCTM插件上的默认自定义字段Metabox名称

我找到了这条线Change Default Custom Fields Metabox Name我还想将这个由cctm插件生成的自定义字段头更改为其他内容,所以我尝试添加 global $wp_meta_boxes; add_filter(\'add_meta_boxes\', \'change_meta_box_titles\'); function change_meta_box_titles() { $wp_meta_boxes[\'my_post_type