Почему wp_get_object_terms добавляет точку после вывода терминов?

11 февр. 2011 г., 19:50:13
Просмотры: 1.29K
Голосов: 0

Я использую следующую строку для вывода неупорядоченного списка таксономий и связанных с ними терминов для пользовательского типа записи. Единственная проблема в том, что после термина добавляется точка.

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

Вот что выводится:

<ul><li>Название таксономии: <a href='http://site.com/taxname/taxterm/'>Термин таксономии</a>.</li></ul>

Есть ли аргумент, который я могу добавить в wp_get_object_terms, чтобы убрать точку?

0
Все ответы на вопрос 1
2

Проблема не в wp_get_object_terms(). Функция the_taxonomies() занимается выводом и ничего не возвращает.

Таким образом, ваш код эквивалентен:

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

Если вы заглянете в wp-includes/taxonomy.php, то найдете точку в исходном коде функции the_taxonomies().

Чтобы убрать точку, вам нужно добавить фильтр:

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

Если вам интересно, то да, это действительно неудобный способ сделать это.

В WordPress 3.1 вы можете изменить шаблон, просто передав его как параметр:

the_taxonomies( array(
  'before' => '<ul><li>',
  'sep' => '</li><li>',
  'after' => '</li></ul>',
  'template' => '%s: %l'
) );
11 февр. 2011 г. 20:13:59
Комментарии

Спасибо. Я полагаю, эта строка (в get_the_taxonomies) вызывает проблему? $template = apply_filters('taxonomy_template', '%s: %l.');

Если да, то есть ли хороший способ сделать это и избежать точек?

Travis Northcutt Travis Northcutt
11 февр. 2011 г. 20:42:07

Да, это прямо перед вами: фильтр 'taxonomy_template'. Смотрите обновлённый ответ.

scribu scribu
11 февр. 2011 г. 20:46:52