我有一个查询,它返回许多不同的自定义帖子类型。我想按帖子类型数组的内容对帖子数组进行排序;e、 g。array(\'post\', \'video\', \'testimonial\'..... );
数组(顺序)是固定的。
如何在不对每种职位类型进行不同查询的情况下管理此问题?
我有一个查询,它返回许多不同的自定义帖子类型。我想按帖子类型数组的内容对帖子数组进行排序;e、 g。array(\'post\', \'video\', \'testimonial\'..... );
数组(顺序)是固定的。
如何在不对每种职位类型进行不同查询的情况下管理此问题?
对于本机API,这是不可能的,您可能会在为其破解SQL时遇到相当大的困难。
在用PHP代码检索后,像这样对帖子重新排序,这将是非常微不足道的。如果您使用get_posts()
您已经得到了您所操纵的数组WP_Query
结果的对象数组可公开使用$posts
所有物
注意,这假设您不需要对该查询分页。在这种情况下,事情很快就会变得一团糟,回到自定义SQL的山上。
你可以使用foreach
循环以按此顺序显示内容。循环遍历数组中的值,在每个循环中foreach
语句,循环浏览帖子并检查帖子类型是否等于当前所在数组中的值。
$query = //whatever your query is;
$array = //your array
foreach ($array as $value) {
foreach ($query as $post) {
if ($post->post_type == $value) {
//code to show that thing
}
}
}
感谢mrben522为我们指明了方向;
<?
$args = array(
\'post_type\' => \'any\',
\'category__in\' => wp_get_post_categories($post->ID),
\'posts_per_page\' => 7,
\'post__not_in\' => array($post->ID) ,
);
$related = new WP_Query($args);
if( $related->have_posts() ) : ?>
<ul class="related-posts">
<?
$array = array (\'article\', \'post\', \'video\', \'webinar\', \'factsheet\',\'whitepaper\', \'casestudy\');
foreach ($array as $value) {
while( $related->have_posts() ) : $related->the_post() ;
if ($post->post_type == $value) {
get_template_part(\'template-parts/content\', \'related\');
}
endwhile;
rewind_posts();
}
?>
</ul>
<? endif;
wp_reset_postdata(); ?>
我正在创造我自己的主题。有没有办法按类别名称排序帖子?因此,如果类别名称为X,请将其设置在有序列表的顶部。有什么办法吗?谢谢你的帮助。