Querying a query

时间:2011-11-17 作者:Simon

假设有一个查询存储在数组中。

我想解析这个数组,找到这个数组中与某个键的某个值匹配的第一个帖子,然后提取整个帖子。

有没有优雅的方法?或者,是否可以在此数组中运行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 所以我不能拉它两次。我想我需要更多地了解数组?

1 个回复
最合适的回答,由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循环

结束

相关推荐