Vediamo un semplice snippet per creare una select box con l’elenco delle categorie, dei tag oppure con i termini di altre tassonomie personalizzate. Il codice è basato sulla funzione get_terms();.

Nel nostro esempio abbiamo una tassonomia personalizzata chiamata ‘Regioni (con slug = ‘regioni’) e vogliamo creare una select box con le varie opzioni che corrispondono alle regioni che abbiamo inserito nel backend.

Ricavare l’elenco dei termini con get_terms()

La funzione get_terms() accetta due parametri, il primo $taxonomies contiene una o più tassonomie mentre il secondo, $args, una serie di opzioni che devono essere specificate.
Il codice seguente è stato preso dal codex di worpdress con una modifica: nel secondo parametro abbiamo impostato ‘hide_empty’ => false per visualizzare tutte le regioni create, anche quelle che ancora non sono state assegnate a nessun articolo.

<?php
// no default values. using these as examples
$taxonomies = array(
    'regioni',
);

$args = array(
    'orderby'           => 'name',
    'order'             => 'ASC',
    'hide_empty'        => false,
    'exclude'           => array(),
    'exclude_tree'      => array(),
    'include'           => array(),
    'number'            => '',
    'fields'            => 'all',
    'slug'              => '',
    'parent'            => '',
    'hierarchical'      => true,
    'child_of'          => 0,
    'get'               => '',
    'name__like'        => '',
    'description__like' => '',
    'pad_counts'        => false,
    'offset'            => '',
    'search'            => '',
    'cache_domain'      => 'core'
); 

$regioni = get_terms($taxonomies, $args);
?>

Se eguiamo un print_r dell’array $regioni notiamo che ogni termine è un oggetto che possiede varie proprietà che ci interessano, come il nome è lo slug.
printer_termini_tassonomia_wordpress

Creare la select box

Per creare la select box useremo un ciclo foreach. Per ogni termine accediamo al nome e allo slug con la sintassi  $regione->name e $regione->slug.

<?php
foreach ($regioni as $regione) {
echo '<option value="' . $regione->slug . '">' . $regione->name . '</option>';
}
?>

  inStileWeb.com
blog comments powered by Disqus