Orderby参数在自定义查询中不起作用

时间:2014-08-26 作者:Mixmastermiike

我有一个非常奇怪的问题,我正在更新的网站。。。

我想做的就是让帖子按降序排列,而不是随机排列。我有下面的代码,但当您将其从“rand”更改为“desc”时,它只是默认按“asc”顺序拉入帖子。我不知道为什么。此外,如果将“orderby”更改为“order”,则默认为升序。。。我在主题中做了一个搜索,看看发生了什么,但根本没有列出的地方。。。有人能把我引向正确的方向吗?

 <?php

 $args= array(
 \'post_type\' => \'waiting-families\',
\'orderby\' => \'rand\'

);

 // The Query
 $the_query = new WP_Query( $args );



 // The Loop
 if (have_posts() ):

while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

<div <?php post_class() ?> id="post-<?php the_ID(); ?>">

    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <?php if ( has_post_thumbnail()) { ?>
            <a href="<?php the_permalink(); ?>"><?php echo get_the_post_thumbnail($id,      \'thumbnail\', array(\'class\' => \'alignleft\',\'style\' => \'width: 150px;height: 150px;padding: 3px;     background: #f0f0f0; border: 1px solid #65C8C6;\')); ?></a>
        <?php } ?>
        <?php my_excerpt(55); ?>

        <p class="postmetadata">
            <?php edit_post_link(\'Edit\', \'\', \' | \'); ?>
        </p>
   </div>

  <?php endwhile; 
else: echo \'<p style="text-align: center; font-size:20px; font-weight: 700; color:         #65c8c6;">More Families to Come.</p>\';
 endif;
   ?>


   <?php // Reset Post Data
  wp_reset_postdata(); ?>

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

orderby 不接受值ASCDESC. 这些是参数的可接受值order. 正在更改\'orderby\' => \'rand\'\'order\' => \'ASC\' 应足够,并应按规则工作

如前所述,

if (have_posts() ):
应该是

if ($the_query->have_posts() ): 
除了这个小小的差异,你的代码必须工作

如果这不能解决您的问题,请查看您的函数。php的任何实例pre_get_posts. 我思考的原因是,pre_get_posts 不仅更改主查询,而且还更改WP_Query. 你have to 包括条件标记is_main_query() 仅以主查询为目标,否则pre_get_posts 将干扰的实例WP_Query

其他资源:

结束

相关推荐

带MENU_ORDER和标题的Orderby

因为Wordpress的原生顺序系统有点愚蠢(即:1个香蕉,10个香蕉,2个香蕉,…)我需要添加一个插件,让我设置数字标题的顺序。问题是当我设置orderby= 具有menu_order title, 菜单的顺序就像我在后端设置的一样。但对于那些订单设置为0的。。。我想回到orderby=title.总之,我希望orderby=menu_order title 如果顺序设置为0,则返回标题。菜单顺序的插件链接:http://wordpress.org/plugins/term-menu-order/