我已经创建了一个自定义帖子字段,用于我的网站,它是待售房地产项目的价格(这是帖子的主题)。它应该按价格对帖子档案进行排序,但我无法将其从高到低排序;它的分类如下:
290万美元
2445万美元
190万美元
1300万美元
客户将添加帖子,以便他们能够轻松地以美元的形式输入值。
我尝试将输入转换为无符号和数字,并尝试了其他方法,如meta\\u key\\u num而不是meta\\u key。
这是我目前拥有的“几乎”有效的东西。
add_action( \'pre_get_posts\', \'kr_change_posts_order\' );
// start - from Toolset
function func_orderby_asking_price( $orderby ) {
global $WP_Views;
if($WP_Views) {
$orderby = str_replace( \'wp_postmeta.meta_value\', "cast(replace(trim( leading \'$\' from wp_postmeta.meta_value),\',\',\'\') AS UNSIGNED)", $orderby ); // also tried NUMERIC
}
return $orderby;
}
add_filter(\'posts_orderby\', \'func_orderby_asking_price\' );
// end from Toolset
function kr_change_posts_order( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
$orderby = genesis_get_custom_field( \'price\' );
$query->set( \'cat\', ( array( 5, 6, 15 ) ) );
$query->set( \'meta_key\', \'price\' );
$query->set( \'orderby\', \'meta_value\' ); // also tried meta_value_num
$query->set( \'order\', \'DESC\' );
}
}
这实际上是我发现并修改的两段代码(函数)。我也尝试过将函数分开,而不是将一个函数放在另一个函数中,但到目前为止,还没有找到一种解决方案来让排序正常工作。
我已经在这个网站和其他地方寻找了几天的解决方案,但运气不好。
提前感谢您的帮助。
KJR公司
最合适的回答,由SO网友:KJRwebdev 整理而成
感谢wpsites的布拉德·道尔顿。net帮助我找到答案。
安装高级自定义字段插件。创建一个名为price的自定义字段,格式为数字。
使用以下代码(基于比尔·埃里克森的教程):
add_action( \'pre_get_posts\', \'kr_change_posts_order\' );
function kr_change_posts_order( $query ) {
if ( $query->is_main_query() && !is_admin() && !is_page() ) {
$orderby = genesis_get_custom_field( \'price\' );
$query->set( \'cat\', ( array( 5, 6, 15 ) ) );
$query->set( \'meta_key\', \'price\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'DESC\' );
}
}
对于ID为5、6和15的三个帖子类别,它按价格降序排序。