Я пытаюсь создать небольшой обзор последних сообщений на моей странице. Все хорошо работает с запросом "wp_get_recent_posts". Теперь я пытался добавить некоторые значки в заголовок, но это всегда не дает мне результата, как только я пытаюсь получить post_category сообщения.
Если попытаться изменить «категорию» $args => на «1,2,3,4,...», но это не помогло.
Любой совет высоко ценится. Мой код:
<?php
$args = array(
'numberposts' => 5,
'offset' => 0,
'category' => '',
'orderby' => 'post_date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' =>'',
'post_type' => 'post',
'post_status' => 'draft, publish, future, pending, private',
'suppress_filters' => true
);
$recent_posts = wp_get_recent_posts( $args, ARRAY_A );
foreach($recent_posts as $post):
if ($post['post_category'] == 1):
echo "<p><i class=\"fas fa-book\"> </i>{$post['post_title']}<br></p>";
elseif ($post['post_category'] == 2):
echo "<p><i class=\"fas fa-desktop\"> </i>{$post['post_title']}<br></p>";
endif;
echo $post['post_category']; //Debug, no output.
echo $post['post_title']; //Debug, output: "example post"
echo $post['post_date']; //Debug, output: "2019-05-21"
endforeach;
?>
Действительно, свойство post_category не существует в post - спасибо. Есть ли способ, как я могу получить доступ к категории отдельного сообщения, чтобы этот скрипт работал?
Объект сообщения не имеет свойства post_category: https://codex.wordpress.org/Class_Reference/WP_Post
Вы можете использовать функцию get_the_category с идентификатором сообщения (https://developer.wordpress.org/reference/functions/get_the_category/):
<?php
$args = array(
'numberposts' => 5,
'offset' => 0,
'category' => '',
'orderby' => 'post_date',
'order' => 'DESC',
'include' => '',
'exclude' => '',
'meta_key' => '',
'meta_value' =>'',
'post_type' => 'post',
'post_status' => 'draft, publish, future, pending, private',
'suppress_filters' => true
);
$recent_posts = wp_get_recent_posts( $args, ARRAY_A );
foreach($recent_posts as $post):
$categories = get_the_category($post['ID']);
foreach ($categories as $category):
if ($category->cat_name == 'firstcategory'):
//first category found
var_dump($category->cat_name);
endif;
if ($category->cat_name == 'secondcategory'):
//second category found
var_dump($category->cat_name);
endif;
endforeach;
endforeach;
?>
Спасибо за это решение! К сожалению, как только я выполняю "var_dump($category->name)", я получаю только NULL NULL NULL NULL NULL. Также, если я удалю "имя" и выполню только "var_dump($category)", я получу 5 пустых массивов. Этот метод работает для вас? Или это может быть из-за «foreach» внутри $post «foreach»? К сожалению, я не могу опубликовать другой фрагмент кода.
что выводит var_dump($categories) перед циклом категорий?
извините, была ошибка: вам нужно получить id так: $post['ID']. также я разместил полный код, который работает для меня...
Объект сообщения, похоже, не имеет свойства post_category: codex.wordpress.org/Class_Reference/WP_Post. Что это за post_category? что за категория? дайте пример категории пожалуйста