De ce wp_get_object_terms adaugă un punct după afișarea termenilor?

11 feb. 2011, 19:50:13
Vizualizări: 1.29K
Voturi: 0

Folosesc următoarea linie de cod pentru a afișa o listă neordonată de taxonomii și termenii asociați pentru un tip personalizat de postare. Singura problemă este că se adaugă un punct după fiecare termen.

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

Iată ce afișează:

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

Există vreun argument pe care îl pot adăuga la wp_get_object_terms pentru a elimina punctul?

0
Toate răspunsurile la întrebare 1
2

wp_get_object_terms() nu este problema. the_taxonomies() este cel care face afișarea; nu returnează nimic.

Deci, codul tău este echivalent cu:

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

Acum, dacă te duci în wp-includes/taxonomy.php vei găsi punctul în codul sursă al the_taxonomies().

Pentru a elimina punctul, trebuie să adaugi un filtru:

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

În caz că te întrebi, da, acesta este un mod ciudat de a face lucrurile.

În WP 3.1, poți modifica șablonul pur și simplu prin transmiterea lui ca parametru:

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

Mulțumesc. Presupun că această linie (din get_the_taxonomies) o cauzează? $template = apply_filters('taxonomy_template', '%s: %l.');

Dacă da, există o metodă bună de a face asta și de a evita punctele?

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

Da, este chiar sub nasul tău: filtrul 'taxonomy_template'. Vezi răspunsul actualizat.

scribu scribu
11 feb. 2011 20:46:52