【发布时间】:2012-08-13 19:40:31
【问题描述】:
我有一个插件,用于根据自定义字段对 Wordpress 帖子进行排序。该字段是价格字段。该插件适用于所有使用欧元和美元的国家。我有一个来自荷兰的客户,他使用欧元但有特殊字符来定义美分。这些特殊字符在插件中引发了排序错误。
这是用于检索和按价格排序的 MySQL 代码:
function price_sort_it() {
global $wpdb, $thisorder;
if($thisorder == 'price-lowest') {
$this_order = 'ASC';
}
else if($thisorder == 'price-highest') {
$this_order = 'DESC';
}
return "(SELECT CAST(REPLACE(REPLACE(REPLACE($wpdb->postmeta.meta_value, ',', ''), '€',''),' ','') AS SIGNED)
FROM $wpdb->postmeta
WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
AND $wpdb->postmeta.meta_key = 'ad_price')" . $this_order;
}
add_filter('posts_orderby', 'price_sort_it');
此代码删除了千位逗号分隔符,还删除了排序前的货币符号。它完美无瑕。
问题是荷兰客户的广告价格如下:
- 5 欧元
- 5 欧元,-
- € 5,00
连同正常值,例如:
- 10,000 欧元
- 500.29 欧元
- 10 欧元
其中逗号表示小数,逗号和负数表示小数和 2 个零的缩写。
关于如何应对这一壮举的任何智者的话?
【问题讨论】:
-
只有这三种情况吗?
-
仅供参考,荷兰不是一个国家。它是荷兰西部的一个地区。荷兰有12个省,北荷兰和南荷兰只是其中的2个。抱歉跑题了:)
-
问题是客户培训,培训他\她必须采用什么格式的价格。
-
@Dragon -lol 相信我,我同意!他们需要使用该程序大声笑
-
你可能觉得这很有趣,但训练是最重要的部分之一。