web-dev-qa-db-fra.com

Échange de la fonction wp_dropdown_categories avec wp_category_checklist

J'essaie de changer un champ dans un widget de recherche en allant dans les fichiers php et en modifiant les fonctions wp. J'essaie actuellement de remplacer une liste déroulante par une liste déroulante par une case à cocher pour les catégories (catégorie parent au sommet et catégories enfants ci-dessous dans l'ordre alphabétique). L'affichage devrait être déroulant si possible.

Voici le code de la liste déroulante actuelle:

<?php 
                        wp_dropdown_categories( array(
                            'show_option_none'  => '-- '.__( 'Select a location', 'advanced-classifieds-and-directory-pro' ).' --',
                            'option_none_value' => $general_settings['base_location'],
                            'child_of'          => max( 0, $general_settings['base_location'] ),
                            'taxonomy'          => 'acadp_locations',
                            'name'              => 'loc',
                            'id'                => 'acadp-location-search-'.$id,
                            'class'             => 'form-control',
                            'orderby'           => 'name',
                            'selected'          => isset( $_GET['loc'] ) ? (int) $_GET['loc'] : -1,
                            'hierarchical'      => true,
                            'depth'             => 10,
                            'show_count'        => false,
                            'hide_empty'        => false,
                        ) );
                    ?>

J'essaie d'utiliser la fonction intégrée wp_category_checklist (). Quelqu'un peut m'aider? Je serais extrêmement reconnaissant!

Merci Luke

1
Luke River

Comme vous ne travaillez pas avec les catégories par défaut mais avec une autre taxonomie, vous ne devez pas utiliser wp_category_checklist() . Au lieu de cela, vous devriez probablement utiliser le plus générique wp terms checklist() . La signature de cette fonction diffère également de celle de wp_dropdown_categories() . Et le tableau d'arguments prend des options complètement différentes.

Vous devez commencer par le code suivant, puis l’adapter en fonction de vos besoins:

require_once ABSPATH . 'wp-admin/includes/template.php';

wp_terms_checklist( 0, array(
    'taxonomy' => 'acadp_locations',
) );

Je ne sais pas si wp_terms_checklist() répondra à tous vos besoins. Vous devez peut-être écrire un Walker personnalisé (Commencez par étendre Walker_Category_Checklist() ) pour adapter le résultat à vos besoins.

1
JHoffmann