Wordpress查询\u发布orderby元查询

Wordpress查询\u发布orderby元查询,wordpress,posts,Wordpress,Posts,这应该很简单,但我无法找到一个正确语法的好例子来实现这一点 我想按meta_查询筛选帖子,但按指定的meta_键排序。 当我按原样运行代码时,结果是一个无限循环。我只包含了问题代码,另一个代码是运行查询帖子的基本循环代码 此外,所有PHP变量都是正确的,不是问题所在 $args2 = array( 'meta_key' => '_count-views_all', //'meta_value' => $id,

这应该很简单,但我无法找到一个正确语法的好例子来实现这一点

我想按meta_查询筛选帖子,但按指定的meta_键排序。

当我按原样运行代码时,结果是一个无限循环。我只包含了问题代码,另一个代码是运行查询帖子的基本循环代码

此外,所有PHP变量都是正确的,不是问题所在

        $args2 = array(
            'meta_key' => '_count-views_all',
            //'meta_value' => $id,
            'orderby' => 'meta_value_num',
            'order' => $sortOrder,
            'posts_per_page' => 9,
            'paged' => $paged,
            'meta_query' => array(  
                        'relation' => 'OR',
                        array(
                            'key' => 'contributorid1',
                            'value' => $id,
                            'compare' => '='
                            ),

                        array(
                            'key' => 'contributorid2',
                            'value' => $id,
                            'compare' => '='
                            )
                        )
        );
        $posts = query_posts($args2); 
    }
这里是另一个查询,它完全不需要交叉引用。这两个语句在同一页上运行,但嵌套在if-else语句中

        $args1 = array(
            //'meta_key' => 'contributorid1',
            //'meta_value' => $id,
            'order' => $sortOrder,
            'orderby' => 'title',
            'posts_per_page' => 9,
            'paged' => $paged,
            'meta_query' => array(
                        'relation' => 'OR',
                        array(
                            'key' => 'contributorid1',
                            'value' => $id,
                            'compare' => '='
                            ),

                        array(
                            'key' => 'contributorid2',
                            'value' => $id,
                            'compare' => '='
                            )
                        )
        );
        $posts = query_posts($args1);

这个问题在我看来是合理的。我看到这个运行到无限循环中的唯一方法是如果这个查询在post循环中运行。当您按原样使用query_posts时,它将更改全局$wp_查询的状态,该查询用于主posts循环中的指针

如果它一直在循环中点击query_posts,它将不断更改全局$wp_query对象的状态,并将当前post的指针重置为新查询的第一个post,这将最终创建无限循环

如果此代码正在循环中使用,我建议改为使用

$query = new WP_Query($args2);
if ($query->have_posts()) { ... etc; }

如果需要在其中设置全局post数据,请确保在使用完该post作为全局post信息后,适当地使用
wp\u setup\u postdata
$query->the_post()
wp\u reset\u postdata
wp\u reset\u query
。我看到这个运行到无限循环中的唯一方法是如果这个查询在post循环中运行。当您按原样使用query_posts时,它将更改全局$wp_查询的状态,该查询用于主posts循环中的指针

如果它一直在循环中点击query_posts,它将不断更改全局$wp_query对象的状态,并将当前post的指针重置为新查询的第一个post,这将最终创建无限循环

如果此代码正在循环中使用,我建议改为使用

$query = new WP_Query($args2);
if ($query->have_posts()) { ... etc; }

如果您需要在其中设置全局post数据,请确保在使用完该post作为全局post信息后,适当地使用
wp\u setup\u postdata
query->the_post()
wp\u reset\u postdata

是的,我研究过,但我有其他问题,所以我决定尝试在Foreach循环中运行它。这就是现在运行的内容,因为我在运行页面的主循环之后运行它。我知道这似乎有点倒退,但循环可以工作,让我按日期排序,按字母排序,而不是按这个mviewed查询。嗯。。我最近做了一个几乎完全相同的查询,没有任何实际问题。您是否查看了WordPress生成的实际查询?我曾尝试对我的一个客户机进行类似的查询(在那里我已经做了同样的事情,但改为按时间戳整数排序),没有问题。我查看了这个查询,如果我添加meta键和order by meta_value_num,它似乎会中断。做了一些进一步的测试后,似乎查询不喜欢同时包含meta_键和meta_查询的参数。有没有其他方法可以在查询帖子中做到这一点?我不知道。下面是我编写的一个功能性查询示例,与您的查询类似:$args=array('post\u type'=>'event','posts\u per\u page'=>$num\u events','no\u found\u rows'=>true','meta\u key'=>'u date','meta\u query'=>array(array('key'=>'\u date','value'=>time(),'type'=>'NUMERIC','compare'=>'>),'orderby'=>'meta\u value\u num','order'=>'ASC');查询帖子($args);是的,我研究了这个问题,但我有其他问题,所以我决定尝试在Foreach循环中运行它。这就是现在运行的内容,因为我在运行页面的主循环之后运行它。我知道它似乎是向后的,但循环可以工作,让我按日期排序,而不是按字母排序。嗯……我几乎完成了一个查询就像最近一样,没有真正的问题。你检查过WordPress生成的实际查询吗?我尝试过对我的一个客户进行类似的查询(我已经做了同样的事情,但改为按时间戳整数排序)没有问题。我提供了第二条信息。我查看了这个查询,如果我按meta_value_num添加meta键和order,它似乎会中断。做了一些进一步的测试,似乎查询不喜欢同时包含meta_键和meta_查询的参数。在query_帖子中是否有其他方法可以做到这一点?我不知道。下面是一个示例我编写的一个功能性查询示例与您的类似:$args=array('post_type'=>'event','posts_per_page'=>$num_events','no_found_rows'=>true','meta_key'=>''''''>date','meta query'=>array(array('key'=>'date','value'=>time(),'type'=>'NUMERIC','compare'=>'>'),'orderby'=>'meta_value_num','order'=>'ASC');查询帖子($args);