Вывод названия категории (проверка на принадлежность)

Встала задача реализовать проверку поста на принадлежность к категории и выводить разные результаты. Нашел код:

<?php  
				if ( in_category( 'arhiv' )) {  
					ничего не выводить
				} else {  
					echo '<li class="item">Категория: <span>'.the_category(', ').'</span></li>';
				}  
			  ?> 		

Этот код выводится в шаблоне single.php. Там к записи есть список

    :
    <ul>
    	<li>текст</li>
    	<li>текст</li>
    	<li>текст</li>
    	<li>текст</li>
    </ul>
    

    Я хочу чтобы на месте третьего

  • происходила проверка на принадлежность и если запись в рубрике Архив, то не выводится название этой категории, а если в любой другой, то выводится:
    <ul>
    	<li>текст</li>
    	<li>текст</li>
    	<?php  
    				if ( in_category( 'arhiv' )) {  
    					ничего не выводить
    				} else {  
    					echo '<li>Категория: <span>'.the_category(', ').'</span></li>';
    				}  
    			  ?> 	
    	<li>текст</li>
    </ul>
    

    Но при таком варианте в исходном коде у меня получается:

    <ul>
    	<li>текст</li>
    	<li>текст</li>
    	Категория
    	<li>Категория: <span></span></li> 
    	<li>текст</li>
    </ul>
    

    Т.е. ссылка не на месте, а выше элементе li. В самом же элементе li между тегами span — пусто. Подскажите что не так по коду? Почему ссылка на рубрику выводится, но не там где надо?

r.yevgeniy
Оцените автора
Добавить комментарий

  1. Sergey Biryukov

    Замените

    the_category(', ')

    на

    get_the_category_list(', ')

    .

    Ответить
    1. r.yevgeniy автор

      Спасибо, работает. Но не пойму the_category же тоже вроде как возвращает html код ссылки на категорию, почему не работало?

      Ответить
      1. Sergey Biryukov

        Функция the_category() не возвращает код, а сразу выводит на экран. Если попытаться «вклеить» её в середину строки, то сначала выведется the_category(), а затем остальная часть (как в вашем примере).

        Если строку разбить на части, то так должно работать:

        echo '<li>Категория: <span>'; the_category(', '); echo '</span></li>';
        

        get_the_category_list() отличается от the_category() тем, что именно возвращает результат в виде строки, а не выводит на экран.

        Ответить
        1. r.yevgeniy автор

          Понял, еще раз спасибо!

          Ответить