single_cat_title () работает на страницах категорий, потому что категория включена в переменные запроса.На одной странице нет имени категории или идентификатора, включенного в переменные запроса, только идентификатор сообщения.
, чтобы взглянуть на переменные запроса, добавьте следующее на своей странице, либо взаголовок или в category.php и в single.php, чтобы увидеть разницу.
<?php var_dump($wp_query->query_vars);?>
Вы можете использовать get_the_category ($ post_ID) , чтобы получить категории одного сообщения,Функция возвращает массив объектов, по одному для каждой категории, назначенной посту.Чтобы получить первую или единственную категорию, используйте индекс массива «0».Если используется вне цикла, передайте идентификатор записи функции.Внутри цикла он будет по умолчанию идентификатором текущей записи.Поскольку вы управляете своим заголовком с помощью этой функции, держу пари, что вы будете передавать идентификатор сообщения.
$skin_type = "green";
$post_id = $_GET['p'];
$category = get_the_category($post_ID);
$category_id = $category[0]->**cat_ID**;
$if($category_id === 218){
$skin_type = "blue;
}
Редактировать:
Я понимаю, что присвоил имя категории для $ category_id вышеЯ изменил свойство объекта на cat_ID
, которое является правильным свойством
Уточните, чтобы ответить на вопрос в комментарии
Если сообщение "SFSF" указано в категориях 1,2,3,и 4, и вы хотите изменить цвет категории 3 при просмотре сообщения на single.php, затем необходимо добавить идентификатор категории к ссылке, по которой вы щелкаете, при условии, что ваша навигация основана на категории.Когда вы нажмете на категорию 3 в вашем меню навигации, вы увидите в строке запроса
"www.example.com/cat=3"
Давайте предположим, что это заголовок сообщения.
<a href = "<?php the_permalink();?>/my_cat=<?php echo $_GET['cat'];?>">
<?php the_title();?>
</a>
Здесь выдобавили пользовательский запрос var "my_cat" и присвоили ему значение идентификатора категории текущей страницы.
В файле single.php вместо получения идентификатора категории из имени категории, как показано выше, вы получите его из строки запроса, аналогично тому, как вы извлекали идентификатор сообщения.
$skin_type = "green";
$category_id = $_GET['my_cat'];
$if($category_id === 218){
$skin_type = "blue;
}