gpt4 book ai didi

php - 对 wp_query 中的 meta_value 进行排序,但在排序前删除特殊字符

转载 作者:行者123 更新时间:2023-11-29 14:23:16 25 4
gpt4 key购买 nike

我有一个插件,可以对搜索页面和分类页面上的帖子进行排序。该循环已经缩小了结果范围,所以我需要的是能够对自定义元值的帖子进行排序。在这种情况下的价格。我希望能够访问现有查询,替换任何特殊字符,然后根据干净的元值进行排序。

我使用了这个选择,但问题是它查询数据库上的所有帖子而不是 wp_query 中找到的结果,这会极大地减慢排序速度

function join_it( $join ) {
global $wpdb;
$sym = get_option('sort_by_ignore');
$join .= "LEFT JOIN (SELECT $wpdb->prefix" . "postmeta.post_id AS ID, CAST(REPLACE(REPLACE(REPLACE($wpdb->prefix" . "postmeta.meta_value, ',', ''), '" . $sym . "',''),' ','') AS SIGNED) AS price FROM $wpdb->prefix" . "postmeta WHERE meta_key = 'my_price'" . ") P ON (P.ID = wp_posts.ID)";

return $join;
}
add_filter('posts_join', 'join_it' );

$args = array_merge( $wp_query->query, array('caller_get_posts' => 1,'paged' => $paged ));

query_posts($args);

最佳答案

如果您仅将其用于排序,则最好使用 posts_orderby 过滤器,而不是 posts_join

如果您发现过滤器影响其他查询,则可以在您需要的地方运行remove_filter后使用它。

我的回答here做了一些模糊相似的事情(没有使用 replace 函数清理值 - 我认为你必须将其保留)。

关于php - 对 wp_query 中的 meta_value 进行排序,但在排序前删除特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com