WordPress自定义分类过滤器

时间:2013-12-03 16:27:11

标签: wordpress

我需要为帖子创建自定义分类结构。我已经阅读了WP Codex,我相信我可以解决这个问题。我的自定义分类将是分层的。

我需要做的是根据这个新的分类法创建一个过滤器。我需要用下拉框来做这件事。

以下是我的自定义分类法的示例:

  • Artlcles
    • 第1条
    • 第2条
    • 第3条
  • 修正
    • 修正案1
    • 修正案2
    • 修正案3

我需要的是有2个下拉框。第一个将包含所有顶级类别(文章,修正等......),然后当选择其中一个类别时,它将填充/生成所有子类别的第二个下拉列表。

我怎样才能做到这一点?

它不会让我发布这么多代码所以我必须编辑我原来的问题....

以下代码就是我在本页http://www.constitutingamerica.org/dev2

上的代码
<?php $args = array(
    'show_option_all'    => '',
    'show_option_none'   => '',
    'orderby'            => 'ID', 
    'order'              => 'ASC',
    'show_count'         => 1,
    'hide_empty'         => 0, 
    'child_of'           => 0,
    'parent'             => 0,
    'exclude'            => '',
    'echo'               => 1,
    'selected'           => 0,
    'hierarchical'       => 0, 
    'name'               => 'cat',
    'id'                 => '',
    'class'              => 'postform',
    'depth'              => 1,
    'tab_index'          => 0,
    'taxonomy'           => 'classification',
    'hide_if_empty'      => false,
    'walker'             => ''
);

$tax_menu_items = get_categories( $args ); ?>

<form name="class-filter" method="get" >
<select name="class-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value="">Select</option>
<? foreach ( $tax_menu_items as $tax_menu_item ): ?>
    <option value="<?php echo get_term_link($tax_menu_item,$tax_menu_item->taxonomy); ?>"><?php echo $tax_menu_item->name; ?></option>
<?php endforeach; ?>
</select>

<?php
$sub_tax_id = $wp_query->get_queried_object_id();
if(isset($sub_tax_id)) {
$args2 = array(
    'show_option_all'    => '',
    'show_option_none'   => '',
    'orderby'            => 'ID', 
    'order'              => 'ASC',
    'show_count'         => 1,
    'hide_empty'         => 0, 
    'child_of'           => 0,
    'parent'             => $sub_tax_id,
    'exclude'            => '',
    'echo'               => 1,
    'selected'           => 0,
    'hierarchical'       => 0, 
    'name'               => 'cat',
    'id'                 => '',
    'class'              => 'postform',
    'depth'              => 1,
    'tab_index'          => 0,
    'taxonomy'           => 'classification',
    'hide_if_empty'      => false,
    'walker'             => ''
);

$tax_menu_items2 = get_categories( $args2 ); ?>

<select name="class-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value="">Select</option>
<? foreach ( $tax_menu_items2 as $tax_menu_item2 ): ?>
    <option value="<?php echo get_term_link($tax_menu_item2,$tax_menu_item2->taxonomy); ?>"><?php echo $tax_menu_item2->name; ?></option>
<?php endforeach; ?>
</select>

<? } ?>
</form>

我很亲密。我的问题是,当选择第二个框时,它会将第二个框重置为与第一个框相同的父分类。我怎样才能获得第二次下拉以保留所有原始的儿童分类法?

1 个答案:

答案 0 :(得分:0)

启用自定义帖子类型的类别。您需要隐藏默认类别选择元框,并创建自己的。

对于代码,您需要检索所有父级别类别并构建下拉列表。选择类别后,您将需要使用AJAX来检索所选父级的类别列表。

保存CPT的代码必须查看自定义下拉菜单,以确定其所属的实际类别,并将其正确显示给用户。