Php WP_查询显示特定帖子,然后显示其余帖子
我怎样才能在WP_查询中,首先显示一个带有特定元字段的帖子,然后正常显示其余的帖子 编辑: 我不想做多个循环,因为我在循环中有检查条件,检查某个帖子是否已经在循环中,我不能分离循环,因为它会破坏我的一些检查条件 其次,多个循环对于分离将要循环的内容很有用。我只想在循环中包含相同的内容,但循环的顺序不同 这是我对循环的查询Php WP_查询显示特定帖子,然后显示其余帖子,php,wordpress,Php,Wordpress,我怎样才能在WP_查询中,首先显示一个带有特定元字段的帖子,然后正常显示其余的帖子 编辑: 我不想做多个循环,因为我在循环中有检查条件,检查某个帖子是否已经在循环中,我不能分离循环,因为它会破坏我的一些检查条件 其次,多个循环对于分离将要循环的内容很有用。我只想在循环中包含相同的内容,但循环的顺序不同 这是我对循环的查询 $queryVideoFirst = new WP_Query(array( 'posts_per_page' => -1, 'numberposts'
$queryVideoFirst = new WP_Query(array(
'posts_per_page' => -1,
'numberposts' => -1,
'post_type' => 'mirror',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'parentIDmirror',
'value' => $postIDCheck,
'type' => 'numeric'
)
)));
现在我有一个名为video\u provider
的元键,我有一个该元键的值列表
我要做的是将video\u provider
meta键中的值UploadAnime
作为循环中的第一个,然后以正常方式输出其余的值
例如,如果上面的查询使用以下video\u provider
元值从数据库中提取了5个mirror
mirror 1: upload_ab
mirror 2: youtube
mirror 3: vimeo
mirror 4: UploadAnime
mirror 5: veevr
然后我希望它的排序方式是先输出UploadAnime
,这样它就可以像这样重新排序
mirror4: UploadAnime
.
.
.
the rest
像这样的多个循环::
<?php
$do_not_duplicate = array();
$do_not_duplicate2[] = array();// set array before loop to avoid errors
// PUT YOUR ARGUMENTS HERE
$args = array(
'orderby' => 'rand', // random order for those with specific meta
'posts_per_page' => -1,
// Post type if needed ..
'post_type' => array(
'my_posttype',
),
'meta_key' => 'my_meta_key',
'meta_value' => 'my_meta_value',
),
);
$my_query = new WP_Query($args);
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; // var for some juggling if needed in loop
$do_not_duplicate_r[] = $post->ID; // but we really need array...
// your loop here ...
endwhile;
// end first condition now we set the new one
$args2 = array(
'orderby' => 'rand',
'posts_per_page' => -1,
// Post type if needed ..
'post_type' => array(
'my_posttype',
),
'meta_key' => 'my_meta_key_2',
'meta_value' => 'my_meta_value_2',
),
);
$my_query_2 = new WP_Query($args2);
while ($my_query_2->have_posts()) : $my_query_2->the_post();
// if already counted, go ahead and ignore
if (in_array($post->ID, $do_not_duplicate_r)) continue; // This is important
$do_not_duplicate = $post->ID; // var for some juggling if needed in loop
$do_not_duplicate_r[] = $post->ID; // but we really need array to continue from before...
endwhile;
// now you can even continue with the normal loop or go on with n others ..
if( have_posts() ){
while(have_posts()){
the_post();
// do not forget to check DUPS
if (in_array($post->ID, $do_not_duplicate_r)) continue;
// your loop
}
}
?>
但在最初的问题中,您没有说明它是什么值,因此对于数值,语法是:
$query = new WP_Query( array ( 'post_type' => 'product',
'orderby' => 'meta_value_num',
'meta_key' => 'my_num' ) );
话虽如此,我真的不明白您为什么在问题中添加了“不要多个循环”
条件。
多个循环将允许您对分离进行更大的控制,因为它允许简单的视觉区分或逻辑分离(每个类型的不同排序只是一个示例)
此外,使用order\u by
参数将强制您将该值全部设置为
在您最初的问题中,您没有详细说明该价值是什么,以及您的最终目标或目的是什么(……我们都喜欢在回答后出现的问题缺少关键细节时……)
总结-如果您想要更多的控制和更容易的维护,那么多个回路仍然是一条路,如果您不想,请在您的问题中详细说明原因。您能具体告诉我哪个答案提供了正确的解决方案吗?标记为“正确答案”的帖子不会首先放置带有特定元字段值的帖子,这些查询的orderby是rand。@dianuj-这是一个不错的答案-但有点复杂..可以通过简单的多个循环完成..问题是我不希望通过多个循环完成:(@Maaz 1-请指定为什么不2-该条件不在原始问题中。3-请指定
元数据
值类型,4-请在问题中添加任何其他条件/详细信息我已用更多信息更新了我的问题,很抱歉,我还解释了我不想要多个l的原因oops.编辑后您提供的两个查询将按meta_值对循环进行排序,因此在我的例子中,提供meta_键作为video_provider
只会按字母顺序对查看其meta值的帖子进行排序,这并不能确保将其meta值作为UploadAnime
的帖子首先出现。对,但是你可以在循环中轻松排序……而且,如果你想在一个查询中完成所有操作,你可能需要重新考虑你给出的值。我以前使用的一种方法是在1\u UploadAnime
中添加前缀来更改值,然后解决问题。(我仍然不理解你对多个循环的推理)最后,我只是创建了另一个元字段来进行排序:)谢谢您的帮助:)
$query = new WP_Query( array ( 'post_type' => 'product',
'orderby' => 'meta_value_num',
'meta_key' => 'my_num' ) );