Я хочу взять базовый цикл WordPress и в том месте, где он вызывает шаблон контента, я хочу запустить оператор if else, который извлекает другую часть шаблона в зависимости от категории. Я знаю, что могу сделать кучу копий archive.php, но зачем делать это для каждой отдельной категории, которую вы хотите использовать?
Итак, я попробовал этот код, но он просто вытаскивал шаблон архива в каждом случае:
while ( have_posts() ) :
the_post();
if ( is_category( 'my-category-slug' )) {
get_template_part( 'template-parts/content', 'single' );
} else {
get_template_part( 'template-parts/content', 'archive' );
}
endwhile;
Итак, могу ли я даже запустить такой оператор if else в цикле?






Wordpress имеет иерархия шаблонов, вам нужно убедиться, что ваш код находится в правильном файле php. Проверьте эта ссылка. В вашем случае вам нужно изменить category.php, вы можете использовать для этого archive.php, если вы удалите все файлы category*.php.
если он выполняется, и вы каждый раз получаете только «template-parts/content-archive.php» и никогда не имеете «template-parts/content-single.php», не означает ли это, что у вас нет архивных страниц с слаг категории "my-category-slug"? или вы не зацикливаете хорошие результаты (возможно, не используете WP_Query с аргументами)?
В этой теме нет файла category.php. Только архив.php. Это в правильном файле.