Hai bisogno di creare e visualizzare un elenco di categorie con checkbox?
Vuoi personalizzare la ricerca mettendo anche la ricerca per categorie?
Vediamo come creare un elenco di categorie con checkbox
Introduzione
Questa funzione di oggi è utile se vuoi estendere la ricerca con di wordpress aggiungendo la ricerca per categoria, oppure per creare una ricerca personalizzata all’interno di categorie personalizzate.
Worpdress già prevede delle funzioni native per visualizzare le categorie come checkbox
- wp_category_checklist(); Codex wordpress
- wp_terms_checklist(); Codex worpdress
L’unica cosa è che possiamo usarle nel frontend dato che sono definite nel file /wp-admin/includes/template.php
quindi provando ad utilizzare, avremo il seguente errore
Fatal error: Call to undefined function wp_category_checklist()
o
Fatal error: Call to undefined function wp_terms_checklist()
Comunque abbiamo scritto la nostra funzione personalizzata, richiamabile tramite shortcode, per ovviare al problema. Vediamo il codice.
Creare un elenco di categorie con checkbox
add_shortcode('categories_checkbox', 'categories_checkbox'); function categories_checkbox( $atts ) { extract(shortcode_atts(array( 'taxonomy' => 'post', 'hierarchical' => '1', 'hide_empty ' => '1', 'title_li' => 'Course category', ), $atts,'categories_checkbox')); $terms = get_terms( $taxonomy, array('hide_empty'=>0 ) ); ob_start();?> <ul id="filter-<?php echo $taxonomy;?>"> <li><?php _e($title_li,'academy'); ?> <ul> <?php foreach($terms as $term){ $id = $taxonomy.'-'.$term->term_id; $haystack = 0; if(is_array($_POST[$taxonomy.'_filter']) && in_array($term->term_id, $_POST[$taxonomy.'filter'])) { $current = $haystack = 1; } echo "<li id='{$id}-li'> <input type='checkbox' id='$id' name='{$taxonomy}_filter[]'".checked($haystack,$current,false)." value='$term->term_id' /> <label for='$id'>$term->name</label> </li>"; }?> </ul> </li> </ul> <?php $output = ob_get_contents(); ob_end_clean(); return $output; }
Ed ecco il codice pronto che potete utilizzare copiandolo nel file functions.php del tema attivo (si lo so lo ripetiamo ogni volta, ma come si dice “Melius abundare quam deficere”) che ritornerà l’elenco delle categorie nel seguente modo
Come utilizzare il codice
il codice è utilizzabile tramite shortcode quindi potete inserirlo all’interno del post singolo
[categories_checkbox title_li='Scegli le categorie' taxonomy='nome-taxonomy']
o tramite codice
do_shortcode("[categories_checkbox title_li='Scegli le categorie' taxonomy='nome-taxonomy']");
I valori che possiamo passare sono
title_li
(string) Il titolo da visualizzare per l’elenco.
taxonomy
(string) il nome della tassonomia da selezionare
hierarchical
(bool) se visualizzare o meno gli elementi figli
hide_empty
(bool) se visualizzare o meno le categorie vuote
E questo è tutto. Ti potrà essere utile? Noi intanto te lo abbiamo condiviso così, non si sa mai, un giorno, chissà…
Per dubbi o domande lasciateci come sempre un commento…e come sempre, date sfogo alla vostra creatività.
DETTAGLI
Livello: medio
Compatibilità: testato su WP versione 3.9.1