你可以wp_category_checklist() 可在任何模板中使用:
require_once( ABSPATH . \'/wp-admin/includes/template.php\' );
wp_category_checklist();
如果您想为其设置一个解析可用参数的短代码,下面是一个示例:
add_shortcode(\'frontend-category-checklist\', \'frontend_category_checklist\');
function frontend_category_checklist($atts) {
// process passed arguments or assign WP defaults
$atts = shortcode_atts( array(
\'post_id\' => 0,
\'descendants_and_self\' => 0,
\'selected_cats\' => false,
\'popular_cats\' => false,
\'checked_ontop\' => true
), $atts, \'frontend-category-checklist\'
);
// string to bool conversion, so the bool params work as expected
$atts[\'selected_cats\'] = to_bool( $atts[\'selected_cats\'] );
$atts[\'popular_cats\'] = to_bool( $atts[\'popular_cats\'] );
$atts[\'checked_ontop\'] = to_bool( $atts[\'checked_ontop\'] );
// load template.php from admin, where wp_category_checklist() is defined
require_once( ABSPATH . \'/wp-admin/includes/template.php\' );
// generate the checklist
ob_start(); ?>
<div class="categorydiv">
<ul class="category-tabs">
<div id="taxonomy-category" class="categorydiv">
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
<?php wp_category_checklist(
$atts[\'post_id\'],
$atts[\'descendants_and_self\'],
$atts[\'selected_cats\'],
$atts[\'popular_cats\'],
null,
$atts[\'checked_ontop\']
); ?>
</ul>
</div>
</div>
</ul>
</div>
<?php
return ob_get_clean();
}
function to_bool($bool) {
return ( is_bool($bool) ? $bool :
( is_numeric($bool) ? ((bool)intval($bool)) : $bool !== \'false\' ) );
}
现在您可以使用
[frontend-category-checklist]
在任何页面或帖子中。除了
$walker
.
更新答案:我已经a fiddle 使用所需的批量CSS,使其看起来像仪表板中的列表。这些复选框在fiddle中不能正常工作,但它们在WordPress前端(4.1)上工作。你可以自由地清理你实际上不需要的CSS规则,我没有时间这么做。
NOTE 我还更新了答案中的函数,以便围绕列表生成更多html。您可能应该用新代码替换旧代码。