php - WP_Query 按 menu_order 而非标题排序
问题描述
我有一个名为“客户”的自定义帖子类型。它具有“customer_currentpast”的属性,可以是“当前”或“过去”。客户与合作伙伴有关。partnerid 也被传入。我想按客户姓名/职务排序。
返回的查询不是按标题排序,而是按menu_order 和标题排序。它不应该按 menu_order 排序。我在 WP_Query 之前立即进行查询重置,然后在之后转储,结果按 menu_order 排序,这是错误的。应该是标题。
<?php
wp_reset_query();
$customersCurrentQuery = new WP_Query( array(
'post_type' => 'customer',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'and',
array(
'key' => 'customer_currentpast',
'value' => 'current',
'compare' => '=',
),
array(
'key' => 'partnerid',
'value' => $post->ID,
'type' => 'numeric',
'compare' => '=',
),
) //meta_query
) //args
); //wp_query
?>
这是输出的查询
SELECT tableprefix_posts.*
FROM tableprefix_posts
INNER JOIN tableprefix_postmeta ON ( tableprefix_posts.ID = tableprefix_postmeta.post_id )
INNER JOIN tableprefix_postmeta AS mt1 ON ( tableprefix_posts.ID = mt1.post_id )
WHERE 1=1 AND (
( tableprefix_postmeta.meta_key = 'customer_currentpast' AND tableprefix_postmeta.meta_value = 'current' )
AND
( mt1.meta_key = 'partnerid' AND CAST(mt1.meta_value AS SIGNED) = '43' )
) AND tableprefix_posts.post_type = 'customer'
AND (tableprefix_posts.post_status = 'publish' OR tableprefix_posts.post_status = 'private')
GROUP BY tableprefix_posts.ID
ORDER BY tableprefix_posts.menu_order, tableprefix_posts.post_title ASC
解决方案
将此代码放在您的functions.php文件中
function filter_query( $query ) {
$query = str_replace("tableprefix_posts.menu_order,", "", $query);
return $query;
}
我们可以在查询中添加参数 ignore_custom_sort = true
因此,在您的情况下,请提出以下论点。
$customersCurrentQuery = new WP_Query( array(
'post_type' => 'customer',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'and',
array(
'key' => 'customer_currentpast',
'value' => 'current',
'compare' => '=',
),
array(
'key' => 'partnerid',
'value' => $post->ID,
'type' => 'numeric',
'compare' => '=',
),
) //meta_query
) //args
); //wp_query
$query = new WP_Query( $customersCurrentQuery );
add_filter( 'posts_orderby', 'filter_query',99,1 )
如果这对您不起作用,请分享您使用过的插件并给我它们的列表。
推荐阅读
- google-sheets - 条件格式 - 根据行内的单元格是否与范围外的单元格匹配为行着色
- mongodb - Mongodb 聚合 - $cond 和 $ne
- python - 为哪些部分的分析代码编写单元测试?
- r - 如何在闪亮的应用程序中播放本地视频?(Windows)
- java - 抑制打包库中父类引起的java编译器警告
- vue.js - 如何在 vuejs 中使用临时值在表中添加新记录
- python - 如何使任何 matplotlib 颜色图成为重复的 cmap?
- macos - go-get run 是否从具有不同环境变量的当前 shell 进程派生出来?
- three.js - 在three.js中获取边界内的人脸
- javascript - 如何在反应表中调整整列边框