Как убрать ссылки из функции get_the_term_list в WordPress?

22 мар. 2011 г., 20:50:26
Просмотры: 17K
Голосов: 2
<?php echo get_the_term_list( $post->ID, 'people', 'People: ', ' ', '' ); ?> 

возвращает что-то вроде:

People: <a href="person1">Person1</a>, <a href="person2">Person2</a>, ...

Как сделать, чтобы возвращалось то же самое, но без ссылок:

People: Person1, Person2
0
Все ответы на вопрос 4
0
13

Альтернативно вы также можете использовать:

<?php 
echo strip_tags (
    get_the_term_list( get_the_ID(), 'tax_name', "Текст перед значением ",", " )
);
?>
17 нояб. 2012 г. 13:03:55
2
12

Может быть проще вручную написать список, например так:

<?php
$terms = wp_get_post_tags( $post->ID );
//Для пользовательской таксономии используйте строку ниже
//$terms = wp_get_object_terms( $post->ID, 'people' );

foreach( $terms as $term )
    $term_names[] = $term->name;

echo implode( ', ', $term_names );
22 мар. 2011 г. 21:39:50
Комментарии

Как это будет работать для пользовательской таксономии? Я пробовал: $terms = get_the_term_list( $post->ID,'people'); но это выдало ошибку

Carson Carson
19 апр. 2011 г. 08:22:13

@Carson ты используешь неправильную функцию, тебе нужна wp_get_object_terms(), так что должно быть: $terms = wp_get_object_terms( $post->ID, 'people' );

Joe Hoyle Joe Hoyle
31 мая 2011 г. 02:23:44
1

Я нашел еще один метод, который более прямо отвечает на мой вопрос:

<?php $terms_as_text = get_the_term_list( $post->ID,'people', 'Люди: ', ', ');
if (!empty($terms_as_text)) echo '<p>', strip_tags($terms_as_text) ,'</p>'; ?>

Источник: CSS Tricks

19 апр. 2011 г. 04:00:17
Комментарии

не делай так. используй решение Joe, но с wp_get_post_terms($post->ID, 'people') вместо wp_get_post_tags()

onetrickpony onetrickpony
19 апр. 2011 г. 09:04:45
1

Использование strip_tags() может усложниться, если вы хотите отобразить ваши термины в виде HTML-списка. Вот решение для вас. Если параметр $raw установлен в true (или любое непустое значение), функция создаст линейный список с выбранным вами разделителем $separator. В противном случае, она сгенерирует HTML-список без ссылок. Если вы хотите, чтобы ваш список имел стилизованный заголовок, установите параметр $titletag, например, в H1 или H2. Если заголовок не нужен, просто оставьте $title пустым.

function show_tax($taxname, $title, $title_tag, $raw, $separator){
    $terms = get_the_terms($post->ID, $taxname);
    $out = '';
    if (!empty($title)){
        if(empty($title_tag)){
            $title_tag = 'span';
           }
            $out .= '<'.$title_tag.'>'.$title.'</'.$title_tag.'>';
        }
    if (!empty($raw)){
                $out = implode($separator, $terms);
        }
        else{

            $out .= '<ul>';
                foreach ( $terms as $term ){
                            $out .='<li>'.$term->name.'</li> ';
                            }
                $out .= '</ul>';

        }       
            return $out;
}

Пример использования:

echo show_tax('people', 'ЛЮДИ', 'h3', '', ''); // HTML-список с заголовком ЛЮДИ
echo show_tax('people', 'ЛЮДИ:', '', true, ','); // Линейный список с префиксом ЛЮДИ:
10 июл. 2014 г. 13:42:17
Комментарии

обновленный код. implode не сработал, потому что это массив объектов постов

MikeiLL MikeiLL
21 апр. 2017 г. 18:25:10