J'ai récemment découvert que nous pouvons insérer une liste déroulante de catégories comme celle-ci:
define( 'WP_USE_THEMES', false );
require( './wp-load.php' );
wp_dropdown_categories( array(
'child_of' => 0,
'class' => 'postform',
'depth' => 0,
'echo' => 1,
'exclude' => '',
'hide_empty' => false,
'hide_if_empty' => false,
'hierarchical' => true,
'id' => '',
'name' => 'cat-dropdown',
'order' => 'ASC',
'orderby' => 'name',
'selected' => 0,
'show_count' => 0,
'show_option_all' => '',
'show_option_none' => __('None'),
'tab_index' => 0,
'taxonomy' => 'format',
) );
C’est génial, MAIS et si je veux sélectionner plusieurs catégories?
J'ai rencontré wp_category_checklist()
et essayé ce code:
function wp_category_checklist(
$post_id = 0,
$descendants_and_self = 0,
$selected_cats = false,
$popular_cats = false,
$walker = null,
$checked_ontop = true
) {
wp_terms_checklist( $post_id, array(
'taxonomy' => 'category',
'descendants_and_self' => $descendants_and_self,
'selected_cats' => $selected_cats,
'popular_cats' => $popular_cats,
'walker' => $walker,
'checked_ontop' => $checked_ontop
) );
}
Mais cela ne produit rien.
J'essaie d'obtenir une liste de mes catégories sur une page blanche, pas dans une barre latérale ou post. Est-ce possible?
Voici la réponse que j'ai fini avec:
$select_cats = wp_dropdown_categories( array( 'echo' => 0 ) );
$select_cats = str_replace( "name='cat' id=", "name='cat[]' multiple='multiple' id=", $select_cats );
echo $select_cats;
Il affiche une liste de mes catégories pouvant être multi-sélectionnées selon ma question. C'est un hack de wp_dropdown_categories
, mais ça marche.
La fonction wp_terms_checklist
est définie dans le fichier /wp-admin/includes/template.php
et n'est donc disponible que du côté administrateur de Wordpress.
Si vous souhaitez sélectionner plusieurs taxonomies personnalisées avec la case à cocher. Vous pouvez utiliser ce code ..
$html .= wp_dropdown_categories( array(
'taxonomy' => 'taxonomy_name',
'hierarchical' => 0,
) );
$html = str_replace( "form id=", "form multiple='multiple' id=", $html );
$html = str_replace( "select", "span", $html );
$html = str_replace( "option class=", "input type='checkbox' class=", $html );
$html = str_replace( "option", "", $html );
$html = str_replace( "</>", "<br/>", $html );
echo $html;
Et Tf Vous voulez sélectionner plusieurs catégories avec la case à cocher. Vous pouvez utiliser ce code ..
$html = wp_dropdown_categories( array( 'echo' => 0, 'hierarchical' => 0 ) ); // Your Query here
$html = str_replace( "form id=", "form multiple='multiple' id=", $html );
$html = str_replace( "select", "span", $html );
$html = str_replace( "option class=", "input type='checkbox' class=", $html );
$html = str_replace( "option", "", $html );
$html = str_replace( "</>", "<br/>", $html );
echo $html;