По сути, я хочу проверить сообщение, относится ли он к определенной категории, но, хоть убей, я делаю что-то не так. Вот текущий код
$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 - это переменная, которую я хочу изменить, если сообщение относится к этой конкретной категории.






if ($catz['slug'] = 'featured') { $colorslist = 'colorlistingfeat'; }
Для операторов сравнения необходимо использовать ==, а не =.
http://php.net/manual/en/language.operators.comparison.php
Надеюсь на эту помощь.
Как сейчас дела? пробовали ли вы просто выводить $ catz ['slug'] на каждой итерации, чтобы увидеть, содержит ли он то, что, по вашему мнению, должно быть?
ничего не эхо :(
Затем вы должны проверить свою предыдущую переменную и так далее, пока не увидите, когда вы не получите того, чего ожидаете. А что насчет $ cat? он содержит ожидаемый массив? Проверьте все свои переменные, и вы, вероятно, увидите, откуда все идет не так.
Массив отображается правильно Объект 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 категорию, большинство сообщений относятся к нескольким категориям.
В вашем коде есть ошибка при проверке массива. Попробуйте вместо этого.
<?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. Проблема в том, что даже с вашим кодом он неправильно проверяет категорию. Не уверен что происходит
Вы пробовали $cat->slug вместо $catz[0]['slug']? Какое его возвращение?
Я сделал, он возвращает родительскую категорию «ico». Однако я не могу извлечь дочернюю категорию из этого родителя, у меня создалось впечатление, что get_category возвращает все категории.
Я считаю, что это потому, что ваш код $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)
Да, я осознал свою ошибку сразу после того, как разместил это, однако, похоже, это все еще не работает