web-dev-qa-db-fra.com

Comment créer un menu déroulant pour les catégories enfants de la taxonomie actuelle visualisée?

J'ai besoin de savoir comment obtenir les termes enfant/petit-enfant de la taxonomie actuelle et les placer dans un menu déroulant afin que je puisse ajouter de la valeur aux options.

J'utilise actuellement ce code pour afficher exactement ce que je veux, mais je ne peux pas modifier les options dans la liste déroulante -

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

L'autre code que j'utilise et dont j'ai besoin pour ressembler ou être semblable à -

<?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>";
 }
?>

Donc, fondamentalement, ce que je recherche, c’est un moyen d’ajouter " value = '. {$ Term-> slug}' " aux options de la première code qui affiche les termes enfants. Avez-vous une idée de la façon dont je peux modifier l’un ou l’autre des codes ci-dessus pour pouvoir ajouter un nom de terme en tant que valeur au menu déroulant des catégories enfants?

1
Rich

Ok bien sans aucune aide d'ici ... J'ai été capable de comprendre comment changer l'option et sélectionner les valeurs de wp_dropdown_categories pour afficher les termes enfants de la taxonomie en cours d'affichage - D'abord, j'ai placé ce code dans mes fonctions fichier, qui crée une classe de marcheur -

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";
}
 }

Voici le code que j'ai placé dans ma barre latérale -

<?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 );
?>
2
Rich