假设有一个查询存储在数组中。
我想解析这个数组,找到这个数组中与某个键的某个值匹配的第一个帖子,然后提取整个帖子。
有没有优雅的方法?或者,是否可以在此数组中运行query\\u posts()?
谢谢
<小时>Edit:
对不起,只是学习使用这个神奇的网站,需要学习正确使用
目的是使get_posts()
, 并在主页中的不同位置显示帖子,而不是一行,那里有一个放置美容类帖子、模特类帖子等的位置。由于任何帖子都可能分为多个类别,我不能只要求在类别中的最后一个帖子:一个帖子可以同时在两个位置。
我的想法是只做一个get\\u posts查询,存储结果并对其进行解析,这样我就可以记录显示的帖子和未显示的帖子。
所以,我用get_posts()
将结果存储在变量中。由于我不希望某些帖子留在查询中,我使用\'post__not_in\'
, 这是array
有帖子ID
我不想要。
function request_highlights($exclude_ids) {
/* request that will populate my hightlight feed */
$args = array(
\'numberposts\' => 16,
\'category\' => null,
\'orderby\' => \'post_date\',
\'order\' => \'DESC\',
\'post__not_in\' => $exclude_ids,
);
return get_posts( $args );
}
$highlights_posts = request_highlights($slides_id);
所以在这一点上,我有一个变量,它是一个对象,我想,有所有需要的数据。
我想做的是,比方说,得到objet中第一个具有cat_ID=5
(例如)。
我现在正在做的是:
foreach ($highlights_posts as $highlights_post) {
$fetched_post = get_the_category($highlights_post->ID);
foreach ( $fetched_post as $fetch_cat) {
if ($fetch_cat->cat_ID == $cat_sq) {
$sq_post_id = $fetch_cat->cat_ID;
break 2;
}
}
}
// stuff to do like get_post($sq_post_id);
现在我意识到我需要删除那个帖子
ID
从我的列表中
$highlights_posts
所以我不能拉它两次。我想我需要更多地了解数组?
最合适的回答,由SO网友:Tom J Nowell 整理而成
// store the IDs of the posts we\'ve already displayed to prevent duplicates
$used_ids = array();
$highlights_posts = request_highlights($slides_id);
foreach( $highlights_posts as $post ) {
setup_postdata($post);
// check if we\'ve already done this post
if(in_array($post->ID,$used_ids)){
// skip to the next one
continue;
}
// we haven\'t done this post before, add it\'s ID to the list
$used_ids[] = $post->ID;
// do stuff e.g. the_title(); etc
}
wp_reset_postdata();
edit: 看过代码后,将类别ID放在函数中或作为参数而不是
\'category\' => null
? 它可以避免您执行if语句和category循环