如何为当前正在查看的分类标准的子类别创建下拉列表?

时间:2012-12-27 作者:730wavy

我需要知道如何获取当前分类法的子/孙术语,并将其放入下拉列表中,以便为选项添加值。

我当前正在使用此代码精确显示我想要的内容,但我无法修改下拉列表中的选项-

<?php

//first get the current term
$current_term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );

//then set the args for wp_dropdown_categories
 $args = array(
    \'child_of\' => $current_term->term_id,
    \'taxonomy\' => $current_term->taxonomy,
    \'hide_empty\' => 0,
    \'hierarchical\' => true,
    \'depth\'  => 2,
    \'title_li\' => \'\',
        \'show_option_all\' => All,
        \'hide_if_empty\' => true
    );
 wp_dropdown_categories( $args );
?>
我使用的另一个代码,我需要它看起来像或类似-

<?php
$terms = get_terms("videoscategory");
 $count = count($terms);
 if ( $count > 0 ){
     echo "<select id=\'filter-select2\' style=\'width:225px;\'>";
echo "<option value=\'*\' data-filter-value=\'\' class=\'selected\'>All items</option>";
     foreach ( $terms as $term ) {
         echo "<option value=\'.{$term->slug}\'>" . $term->name . "</option>";
     }
     echo "</select>";
 }
?>
因此,基本上我要寻找的是一种添加“value=\'.{$term->slug}\' “到显示子术语的第一个代码的选项。您知道如何修改上面的任一代码,以便将术语名称作为值添加到子类别的下拉列表中吗?”?

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

好吧,没有这里的任何帮助。。。。。。。我能够找出如何更改选项并选择wp\\u dropdown\\u categories的值,以显示当前正在查看的分类法的子术语-首先,我将此代码放入我的函数文件中,该文件创建了一个walker类-

class SH_Walker_TaxonomyDropdown extends Walker_CategoryDropdown{

    function start_el(&$output, $category, $depth, $args) {
        $pad = str_repeat(\'&nbsp;\', $depth * 2);
        $cat_name = apply_filters(\'list_cats\', $category->name, $category);

        if( !isset($args[\'value\']) ){
            $args[\'value\'] = ( $category->taxonomy != \'category\' ? \'slug\' : \'id\' );
        }

        $value = ($args[\'value\']==\'slug\' ? $category->slug : $category->term_id );

        $output .= "\\t<option class=\\"level-$depth\\" data-filter-value=\\".".$value."\\"";
        if ( $value === (string) $args[\'selected\'] ){ 
            $output .= \' selected="selected"\';
        }
        $output .= \'>\';
        $output .= $pad.$cat_name;
        if ( $args[\'show_count\'] )
            $output .= \'&nbsp;&nbsp;(\'. $category->count .\')\';

        $output .= "</option>\\n";
}
 }
这是我放在侧边栏中的代码-

<?php

//first get the current term
$current_term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );

//then set the args for wp_dropdown_categories
 $args = array(
    \'walker\'=> new SH_Walker_TaxonomyDropdown(),
    \'value\'=>\'slug\',
    \'child_of\' => $current_term->term_id,
    \'taxonomy\' => $current_term->taxonomy,
    \'hide_empty\' => 0,
    \'hierarchical\' => true,
    \'depth\'  => 2,
    \'title_li\' => \'\',
    \'id\' => \'filter-select\',
    \'class\' => \'filter option-set\',
        \'show_option_all\' => All,
        \'hide_if_empty\' => true
    );
 wp_dropdown_categories( $args );
?>

结束

相关推荐

让parse_Query筛选器返回slug而不是id

经过上周的头痛之后,我觉得我的问题几乎解决了。我一直在尝试自定义管理编辑。php自定义帖子类型页面,用于显示和排序/过滤自定义分类法。我已经从网上找到了一系列操作和过滤器,但我担心我可能正在使用不推荐的代码,因为其中一些代码已经很旧了。我想我已经把问题缩小到这个过滤器了add_filter(\'parse_query\',\'convert_large_feature_id_to_taxonomy_term_in_query\'); function convert_large_feature_i