在同一天内按元键排序

时间:2016-01-17 作者:lotopala

我尝试构建一些可以按天对帖子进行排序的东西,并在同一天内使用任何元值(整数)对帖子进行排序,比如人气、投票等等。

所以,最后,我得到了今天的帖子,然后是昨天的帖子,等等。。。

自v4以来,WordPress查询对象允许良好的多表排序,包括元数据。

<?php $the_query = new WP_Query( 
    array( 
        \'meta_key\' => \'my_meta_field\',
        \'orderby\' => array( 
            \'date\' => \'DESC\', 
            \'my_meta_field\' => \'DESC\' 
        ) 
    ) 
);
?>
但是orderby 日期似乎更像是基于时间的,我需要一些基于日期的东西。然后,我的帖子只按时间排序,忽略了元字段。

有什么帮助吗?

1 个回复
SO网友:olup otilapan

因此,这里有一个快速的解决方案—通过对So进行一些搜索和查询分析:保留主查询,但添加一个用于排序的特殊过滤器。

过滤器(在function.php中):

function my_posts_orderby( $orderby ) {
  $orderby = \'DATE(wp_posts.post_date) DESC, wp_postmeta.meta_value DESC\';
  return $orderby;
}
请注意DATE()mysql函数,它将日期从full time字段中去掉。

然后,在循环之前,按如下方式运行查询:

<?php add_filter( \'posts_orderby\', \'my_posts_orderby\' ); ?>

<?php $the_query = new WP_Query( array( \'meta_key\' => \'_my_meta_field\' ) ); ?>
这意味着,调用过滤器,然后创建一个包含自定义元字段的查询,以便对其进行排序。

然后,在循环之后,不要忘记调用

<?php remove_filter( \'posts_orderby\', \'posts_orderby\' ); ?>
无法进行任何其他查询(包括显示单个帖子)

这是可行的。

相关推荐

如何在WooCommerce_Account_Orders函数中传递$CURRENT_PAGE?

woocommerce功能woocommerce_account_orders($current_page) 已调用1个参数$current_page. 该函数通过调用woocommerce_account_orders_endpoint 通过以下挂钩-add_action( \'woocommerce_account_orders_endpoint\', \'woocommerce_account_orders\' );然而,在上述挂钩中,$current_page 未在函数中作为参数传递。情况如何$c