Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WP_查询显示特定帖子,然后显示其余帖子_Php_Wordpress - Fatal编程技术网

Php WP_查询显示特定帖子,然后显示其余帖子

Php WP_查询显示特定帖子,然后显示其余帖子,php,wordpress,Php,Wordpress,我怎样才能在WP_查询中,首先显示一个带有特定元字段的帖子,然后正常显示其余的帖子 编辑: 我不想做多个循环,因为我在循环中有检查条件,检查某个帖子是否已经在循环中,我不能分离循环,因为它会破坏我的一些检查条件 其次,多个循环对于分离将要循环的内容很有用。我只想在循环中包含相同的内容,但循环的顺序不同 这是我对循环的查询 $queryVideoFirst = new WP_Query(array( 'posts_per_page' => -1, 'numberposts'

我怎样才能在WP_查询中,首先显示一个带有特定元字段的帖子,然后正常显示其余的帖子

编辑:

我不想做多个循环,因为我在循环中有检查条件,检查某个帖子是否已经在循环中,我不能分离循环,因为它会破坏我的一些检查条件

其次,多个循环对于分离将要循环的内容很有用。我只想在循环中包含相同的内容,但循环的顺序不同

这是我对循环的查询

$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' ) );