我正在尝试实现我自己的查询排序,下面是我想到的。。。
$query = new WP_Query(\'post_type=contentboxes&include=\' . $contentboxes . \'&order=ASC&orderby=include\' );
我的自定义循环,
$contentbox类似于带有orderby include参数的34,45,23,46。为了实现自定义订单,我使用*pre\\u get\\u posts*和*posts\\u orderby*过滤器。
function pre_get_posts( $query )
{
if ( \'include\' == $query->query_vars[\'orderby\'] ) :
global $order_by_include;
$order_by_include = TRUE;
endif;
}
*$order\\u by\\u include*是一个空变量,在使用自定义排序时创建。function posts_orderby( $orderby )
{
if ( !isset( $order_by_include ) )
return $orderby;
global $wpdb, $contentbox_order;
unset( $order_by_include );
return "FIND_IN_SET(" . $wpdb->posts . ".ID, \'" . $wp_query->query_vars[\'include\'] . "\') " . $wp_query->query_vars[\'order\'];
}
在posts\\U orderby过滤器中,如果设置了变量,我会将当前订单覆盖为自定义订单。之后,我取消设置变量以保持全局范围干净,并且不改变任何其他循环。这是我现在的问题,我不喜欢使用全局变量来实现这个特性,我认为这有点脏,但确实可以。
我试图从posts\\u orderby中的自定义查询中获取查询变量,但我的自定义查询除外。
有没有更干净的方法?