Проверьте, находится ли сообщение в категории за пределами цикла

По сути, я хочу проверить сообщение, относится ли он к определенной категории, но, хоть убей, я делаю что-то не так. Вот текущий код

$post_catz = wp_get_post_categories( $this->post->ID );
$catz = array();

foreach($post_catz as $c){
    $cat = get_category( $c );
    $catz[] = array( 'name' => $cat->name, 'slug' => $cat->slug );
    if ($catz['slug'] = 'featured') { 
        $colorslist = 'colorlistingfeat'; 
    }
}   

$colorslist - это переменная, которую я хочу изменить, если сообщение относится к этой конкретной категории.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
371
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

if ($catz['slug'] = 'featured') { $colorslist = 'colorlistingfeat'; }

Для операторов сравнения необходимо использовать ==, а не =.

http://php.net/manual/en/language.operators.comparison.php

Надеюсь на эту помощь.

Да, я осознал свою ошибку сразу после того, как разместил это, однако, похоже, это все еще не работает

vexx 03.08.2018 14:37

Как сейчас дела? пробовали ли вы просто выводить $ catz ['slug'] на каждой итерации, чтобы увидеть, содержит ли он то, что, по вашему мнению, должно быть?

AlaricB 03.08.2018 14:40

ничего не эхо :(

vexx 03.08.2018 14:44

Затем вы должны проверить свою предыдущую переменную и так далее, пока не увидите, когда вы не получите того, чего ожидаете. А что насчет $ cat? он содержит ожидаемый массив? Проверьте все свои переменные, и вы, вероятно, увидите, откуда все идет не так.

AlaricB 03.08.2018 14:49

Массив отображается правильно Объект WP_Term ([term_id] => 13 [name] => ICO [slug] => ico [term_group] => 0 [term_taxonomy_id] => 13 [taxonomy] => category [description] => [ parent] => 0 [count] => 4 [filter] => raw [cat_ID] => 13 [category_count] => 4 [category_description] => [cat_name] => ICO [category_nicename] => ico [category_parent] = > 0) Проблема в том, что он отображает только 1 категорию, большинство сообщений относятся к нескольким категориям.

vexx 03.08.2018 14:58
Ответ принят как подходящий

В вашем коде есть ошибка при проверке массива. Попробуйте вместо этого.

<?php
$post_catz = wp_get_post_categories(get_the_ID());
$catz = array();

foreach($post_catz as $c){
    $cat = get_category( $c );
    $catz[] = array( 'name' => $cat->name, 'slug' => $cat->slug );
}   

foreach($catz as $cs){
    if ($cs['slug'] == 'featured') { 
        $colorslist = 'colorlistingfeat'; 
    }
}

echo $colorslist;
?>

Но убедитесь, что $this->post->ID возвращает идентификатор сообщения.

$ this-> post-> ID возвращает идентификатор, я также повторил массив, как вы можете видеть в ответе, который я дал @AlaricB. Проблема в том, что даже с вашим кодом он неправильно проверяет категорию. Не уверен что происходит

vexx 03.08.2018 15:07

Вы пробовали $cat->slug вместо $catz[0]['slug']? Какое его возвращение?

Outsource WordPress 03.08.2018 15:12

Я сделал, он возвращает родительскую категорию «ico». Однако я не могу извлечь дочернюю категорию из этого родителя, у меня создалось впечатление, что get_category возвращает все категории.

vexx 03.08.2018 15:19

Я считаю, что это потому, что ваш код $catz[] = array( 'name' => $cat->name, 'slug' => $cat->slug );. Обратите внимание, что $catz[] - это переменная массива ... поэтому вы должны получить слаг как $catz[0]['slug], иначе $catz просто вернет значение Null. Намного лучше отредактировать ваш код как $catz = array( 'name' => $cat->name, 'slug' => $cat->slug );

А также обратите внимание на ваш оператор if. должно быть if (cond == cond)

Другие вопросы по теме