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

Замените
на
.
Спасибо, работает. Но не пойму the_category же тоже вроде как возвращает html код ссылки на категорию, почему не работало?
Функция the_category() не возвращает код, а сразу выводит на экран. Если попытаться «вклеить» её в середину строки, то сначала выведется the_category(), а затем остальная часть (как в вашем примере).
Если строку разбить на части, то так должно работать:
get_the_category_list() отличается от the_category() тем, что именно возвращает результат в виде строки, а не выводит на экран.
Понял, еще раз спасибо!