カスタム フィールドに基づいて 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');
このコードは、並べ替えの前に、3 桁のコンマ区切り記号を削除し、通貨記号も削除します。それは完璧に動作します。
問題は、オランダのクライアントが次のような価格の広告を掲載していることです。
- €5
- €5、-
- €5,00
次のような通常の値とともに:
- 10,000ユーロ
- €500.29
- €10
コンマは小数を表し、コンマとマイナス記号は小数と 2 つのゼロの省略形を表します。
この偉業に取り組む方法についての賢明な言葉はありますか?