carson
  • 0
Учитель

Как убрать ссылки из функции «получить список терминов»?

  • 0

[[code0]]

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

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

Как я могу заставить его возвращать то же самое без ссылок, подобных этой:

People: Person1, Person2
Share
  1. Может быть проще просто написать список вручную, например:

    <?php
    $terms = wp_get_post_tags( $post->ID );
    //For custom taxonomy use this line below
    //$terms = wp_get_object_terms( $post->ID, 'people' );
    
    foreach( $terms as $term )
        $term_names[] = $term->name;
    
    echo implode( ', ', $term_names );
    
    • 0
  2. В качестве альтернативы вы также можете использовать

    <?php 
    echo strip_tags (
        get_the_term_list( get_the_ID(), 'tax_name', "Text Before Value ",", " )
    );
    ?>
    
    • 0
  3. Я нашел другой метод, который более прямо отвечает на мой вопрос:

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

    Предоставлено: CSS-трюки.

    • 0
  4. Использование strip_tags() может усложниться, если вы хотите отобразить свои термины в виде списка HTML. Здесь есть кое-что для вас. $raw, установленный в true (или что-то еще, что не пусто), просто создаст встроенный список с выбранным вами разделителем $, если нет, он сгенерирует список 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', 'PEOPLE', 'h3', '', ''); // An html list with PEOPLE as title
    echo show_tax('people', 'PEOPLE:', '', true, ','); // An inline list with PEOPLE: as before text
    
    • 0

Оставить ответ

You must login to add an answer.