如何将WPQuery数组与PHP数组合并并使用循环输出结果

时间:2016-05-09 作者:TJ Sherrill

我有一个基本正常的WP_Query (获取3种帖子类型)用于博客页面。这很有效。

客户希望包括Instagram图像并按日期订购。我已经完成了所有instagram代码的设置,并且可以很好地创建一个单独的阵列。需要注意的是,我需要将此Instagram帖子数组格式化为一个数组,该数组具有类似于published等字段的键。

我想合并这些数组并使用WP循环进行输出。看起来有点夸张,但我想我会问的。

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

从技术上讲,您可以通过操纵posts 字段(例如$wp_query->posts 用于主查询)。WP在里面public 便于查看和访问。

然而,这并不是一种常见的技术,如果你正在考虑注射一些实际上不是帖子的东西,那么就不那么常见了。

这种输出更常见的是在循环迭代中检查和输出附加数据。最典型的例子是访问$wp_query->current_post 计数器可以执行“每三次发布后输出”之类的操作。但真正要检查什么和合并什么逻辑取决于您。

SO网友:jgraup

您不必合并数组来在循环中使用它们。您只需要一个可以用作哈希查找的类似密钥。那就是wp_list_pluck 很方便。

// Image Data
$instagrams = array (
    array (
        \'post_id\' => 1,
        \'image\' => \'http://placekitten.com/200/300\',
    ), array (
        \'post_id\' => 2,
        \'image\' => \'http://placekitten.com/200/300\',
    ), array (
        \'post_id\' => 3,
        \'image\' => \'http://placekitten.com/200/300\',
    ),
);

// Transform the array where post_id is the key
$hash = wp_list_pluck( $instagrams, \'image\', \'post_id\' );

// WP_Query arguments
$args = array (
    \'post_type\' => array ( \'post\' ),
    \'post_status\' => array ( \'publish\' ),
    \'posts_per_page\' => \'3\',
);

// The Query
$query = new WP_Query( $args );

// The Loop
if ( $query->have_posts() ) {
    while( $query->have_posts() ) {
        $query->the_post();

        // the ID from the post
        $post_id = get_the_ID();

        // becomes the key to the image array
        if ( isset( $hash[ $post_id ] ) ) {

            $image = $hash[ $post_id ];

            echo $image;
        }
    }
}

wp_reset_postdata();
其他技术包括使用数组进行循环get_posts, 使用自定义排序usort 或重复使用循环rewind_posts -- 这取决于你想变得多聪明。

相关推荐

WordPress Custom Post Loop

我正在尝试循环浏览自定义WordPress帖子,遇到了一个问题,比如我添加了自定义字段并想在中显示它<li> 使用循环。我成功地完成了操作,但数据/链接/类别正在重复,如果类别与以下内容相同,我希望只显示一次:如果我有2篇带有data1类别的帖子,那么链接将只显示data1once 但我有2个不同类别的帖子,然后它会分别显示每个帖子。Sample Code:<ul class="filter filter-top"> <li cla