因此,您需要从多个帖子类型中查询帖子,但也需要使用不同的查询参数,如自定义字段、tax\\u查询或类别。
由于您没有发布您尝试、已经或想要的内容,请尝试以下内容:
我们使用3个查询来设置所有内容。可以为每个查询添加不同的参数。
收到post ID´s
从我们的第一个帖子类型,product
:
$first_post_ids = get_posts( array(
\'fields\' => \'ids\', // only return post ID´s
\'posts_per_page\' => \'5\',
\'post_type\' => array(\'product\'),
));
获取
post ID´s
从我们的第二个帖子类型来看,
post
:
$second_post_ids = get_posts( array(
\'fields\' => \'ids\', // only return post ID´s
\'posts_per_page\' => \'5\',
\'post_type\' => array(\'post\'),
));
将两个查询合并为一个:
$merged_post_ids = array_merge( $first_post_ids, $second_post_ids);
生成第三个查询:
$wp_query = new WP_Query( array(
\'post_type\' => \'any\', // any post type
\'post__in\' => $merged_post_ids, // our merged queries
) );
循环:
if ( $wp_query->have_posts() ) :
while ( $wp_query->have_posts() ) : $wp_query->the_post();
//look at $post here !!
//Example: $post->post_type;
//this return the type of each post so you can do checks and stuff
//for example show title and content
the_title( \'<h2>\', \'</h2>\' );
the_content();
endwhile;
// reset after query
wp_reset_query();
else :
echo \'Sorry, no posts matched your criteria.\';
endif;
<小时>
Update: Check if array_merge is not null to prevent any types showing array_merge
用于合并2个数组,顾名思义。
例如,如果$first_post_ids
是一个string
, 那就行不通了。这就是为什么我们使用\'fields\' => \'ids\',
在我们的查询中<因为正如法典所说:
“ids”-返回post ID的数组。
即使这两个查询中有一个是空的(即我们没有帖子),array_merge
仍然有效。
但我们可以检查array_merge
:
//... first two queries
$merged_post_ids = array_merge( $first_post_ids, $second_post_ids );
//check if the array_merge exists/not null
if ( $merged_post_ids ) {
$wp_query = new WP_Query( array(
\'post_type\' => \'any\', // any post type
\'post__in\' => $merged_post_ids, // our merged queries
) );
//... your query code here
}//END if $merged_post_ids
您还可以使用
else
语句以运行另一个查询。