невозможно получить доступ к single_cat_title () после нажатия на сообщение - PullRequest
0 голосов
/ 18 августа 2010
    $skin_type = "green";

$category_id = get_cat_ID( single_cat_title("", false));
if($category_id == 218){
$skin_type = "blue";
}

У меня есть этот код в верхней части моего заголовка, чтобы выбрать различные фоны для моих категорий.Он прекрасно работает при переходе между категориями с помощью меню, но он работает как single_cat_title (), когда я нажимаю на сообщение, чтобы ввести single.php.Что я делаю не так и как мне обойти это?

Спасибо

1 Ответ

1 голос
/ 18 августа 2010

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...