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

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

<?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 — пусто. Подскажите что не так по коду? Почему ссылка на рубрику выводится, но не там где надо?

    Создай свой первый сайт на WordPress

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 автор

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

          Ответить