wp_list_categories的自定义函数将术语列为复选框

Ame*_*sey 2 php wordpress checkbox filtering custom-taxonomy

我需要编写wp_list_categories自定义函数等等,而不是显示链接的分级列表,他们是不是与父词条被显示为H3标签复选框列表.

最终的输出看起来像http://jsfiddle.net/amesy/kwqpf5fv/6/

这是我的WordPress模板文件中的PHP代码...

<?php 
//list terms in a given taxonomy using wp_list_categories (also useful as a widget if using a PHP Code plugin)

$taxonomy     = 'tags';
$orderby      = 'name'; 
$show_count   = 1;      // 1 for yes, 0 for no
$pad_counts   = 0;      // 1 for yes, 0 for no
$hierarchical = 1;      // 1 for yes, 0 for no
$title        = '';

$args = array(
  'taxonomy'     => $taxonomy,
  'orderby'      => $orderby,
  'show_count'   => $show_count,
  'pad_counts'   => $pad_counts,
  'hierarchical' => $hierarchical,
  'title_li'     => $title
);

?>

<ul class="categories">
    <?php wp_list_categories( $args ); ?>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是<?php wp_list_categories( $args ); ?>输出的HTML ...

<ul class="categories">
<li class="cat-item cat-item-21"><a href="http://tandsdev.co.uk/portfoliotags/client/" >Client</a>      (0)
<ul class='children'>
<li class="cat-item cat-item-22"><a href="http://tandsdev.co.uk/portfoliotags/bmw/" >BMW</a> (3)
</li>
</ul>
</li>
<li class="cat-item cat-item-25"><a href="http://tandsdev.co.uk/portfoliotags/section/" >Section</a>    (0)
<ul class='children'>
<li class="cat-item cat-item-27"><a href="http://tandsdev.co.uk/portfoliotags/automotive/" >Automotive</a> (3)
</li>
<li class="cat-item cat-item-28"><a href="http://tandsdev.co.uk/portfoliotags/property/" >Property</a> (2)
</li>
</ul>
</li>
<li class="cat-item cat-item-26"><a href="http://tandsdev.co.uk/portfoliotags/service/" >Service</a> (0)
<ul class='children'>
<li class="cat-item cat-item-29"><a href="http://tandsdev.co.uk/portfoliotags/branding/" >Branding</a> (3)
</li>
<li class="cat-item cat-item-30"><a href="http://tandsdev.co.uk/portfoliotags/email/" >Email</a> (3)
</li>
<li class="cat-item cat-item-31"><a href="http://tandsdev.co.uk/portfoliotags/website/" >Website</a> (2)
</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

复选框代码我想每个术语将被显示为将形成在这里可以看到过滤系统http://jsfiddle.net/amesy/kwqpf5fv/6/

<div class="tags">
    <h3>service</h3>
        <label><input type="checkbox" id="type-Website" rel="Website">Website</label>
        <label><input type="checkbox" id="type-Email" rel="Email">Email</label>
        <label><input type="checkbox" id="type-Branding" rel="Branding">Branding</label>
    <h3>sector</h3>
        <label><input type="checkbox" id="type-Automotive" rel="Automotive">Automotive</label>
        <label><input type="checkbox" id="type-Property" rel="Property">Property</label>
</div>
Run Code Online (Sandbox Code Playgroud)

我仍想保留层级,如上面的例子中的复选框,但在H3标签的标题是父词条,我不希望这些为复选框,我怎么做到这一切?:)

vic*_*nte 8

也许你可以用get_categories()而不是wp_list_categories().

首先,您使用parent => 0并在h3标记中显示类别名称来获取顶级类别.然后,您可以使用parent => $category->term_id并显示复选框来获取子类别.

使用类似下面的示例:

$args = array(
    'taxonomy'      => 'tags',
    'parent'        => 0, // get top level categories
    'orderby'       => 'name',
    'order'         => 'ASC',
    'hierarchical'  => 1,
    'pad_counts'    => 0
);

$categories = get_categories( $args );

foreach ( $categories as $category ){

    echo '<h3>'. $category->name . '</h3>';

    $sub_args = array(
        'taxonomy'      => 'tags',
        'parent'        => $category->term_id, // get child categories
        'orderby'       => 'name',
        'order'         => 'ASC',
        'hierarchical'  => 1,
        'pad_counts'    => 0
    );

    $sub_categories = get_categories( $sub_args );

    foreach ( $sub_categories as $sub_category ){

        echo '<label><input type="checkbox" id="type-'. $sub_category->name . '" rel="'. $sub_category->name . '">'. $sub_category->name . '</label>';

    }

}
Run Code Online (Sandbox Code Playgroud)