Perché wp_get_object_terms aggiunge un punto dopo i termini nell'output?

11 feb 2011, 19:50:13
Visualizzazioni: 1.29K
Voti: 0

Sto utilizzando la seguente riga di codice per generare una lista non ordinata di tassonomie e i relativi termini associati a un custom post type. L'unico problema è che viene aggiunto un punto dopo ogni termine.

wp_get_object_terms( $id, the_taxonomies( 'before=<ul><li>&sep=</li><li>&after=</li></ul>' ) );  

Ecco cosa restituisce:

<ul><li>Taxname: <a href='http://site.com/taxname/taxterm/'>Taxterm</a>.</li></ul>  

C'è un argomento che posso aggiungere a wp_get_object_terms per rimuovere il punto?

0
Tutte le risposte alla domanda 1
2

wp_get_object_terms() non è il problema. the_taxonomies() è la funzione che effettua l'output; non restituisce nulla.

Quindi, il tuo codice è equivalente a:

the_taxonomies( 'before=<ul><li>&sep=</li><li>&after=</li></ul>' );
wp_get_object_terms( $id, null );

Ora, se vai in wp-includes/taxonomy.php troverai il punto nel sorgente di the_taxonomies().

Per rimuovere il punto, devi aggiungere un filtro:

function remove_the_dot($template) {
  return '%s: %l';
}
add_filter('taxonomy_template', 'remove_the_dot');

Nel caso te lo stessi chiedendo, sì, questo è un modo scomodo di fare le cose.

In WP 3.1, puoi modificare il template semplicemente passandolo come parametro:

the_taxonomies( array(
  'before' => '<ul><li>',
  'sep' => '</li><li>',
  'after' => '</li></ul>',
  'template' => '%s: %l'
) );
11 feb 2011 20:13:59
Commenti

Grazie. Presumo che questa riga (in get_the_taxonomies) sia la causa? $template = apply_filters('taxonomy_template', '%s: %l.');

Se è così, c'è un buon modo per farlo ed evitare i punti?

Travis Northcutt Travis Northcutt
11 feb 2011 20:42:07

Sì, è proprio sotto il tuo naso: il filtro 'taxonomy_template'. Vedi la risposta aggiornata.

scribu scribu
11 feb 2011 20:46:52