CG
(@du-bist-der-lenz)
清音が順になっていて、その後に濁音、半濁音がその他扱いになっているためでしょう。清音と濁音、半濁音をグループ化したいわけですが、その際のルールはどうしますか。
CGさん、返信ありがとうございます。
参照画像の様に「ゔ」だけがその他扱いなのかと思います。
「ば」や「ぱ」であれは「は」の次に表示されるので、「ゔ」も同じ表示順にしたいです。
CG
(@du-bist-der-lenz)
外務省での正式表記は、「ヴェネツィア」ではなくて「ベネチア」。いやらしいところですね、「ヴュー」か「ビュー」か、「ヴ」の課題は多岐にあります。一般認識はどうか、どちらで文字がタイプされるケースが大きいか。それを、自身のサイトでのルールではどう収めるのか。しっかり検討が必要です。
こんにちは
データベース(MySQL)の文字コードによるのかもしれません。
https://qiita.com/tfunato/items/e48ad0a37b8244a788f6
posts_orderby フックなどで照合順序(COLLATE)を指定してみてはどうでしょうか?
https://dev.mysql.com/doc/refman/5.6/ja/charset-collate.html
例:
function my_posts_orderby( $orderby, $query ) {
global $wpdb;
if ( is_admin() && $query->query['post_type'] == 'post' ) {
if ( $query->query_vars['orderby'] == 'title' ) {
$order = $query->query_vars['order'];
$orderby = "{$wpdb->posts}.post_title COLLATE utf8mb4_unicode_ci {$order}";
}
}
return $orderby;
}
add_filter( 'posts_orderby','my_posts_orderby', 10, 2 );
なお「ゔ」(「う」に濁点)は環境依存文字のようなので、上記の方法では対応できないかもしれません。その場合は、下記のように文字を置換するとできるかもしれません。
$orderby = "{$wpdb->posts}.post_title COLLATE utf8mb4_unicode_ci {$order}";
↓
$orderby = "replace({$wpdb->posts}.post_title, 'ゔ', 'ぇ') {$order}";
こんにちは
Unicode では「ゔ」は「ん」の後なのでそのような並びになります。
https://ja.m.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF
置き換えるなら、分解して「う゛」にした方が自然な並びになる気がします。
気になったので試してみました。
データベースのテーブルの照合順序は utf8mb4_unicode_ci です。結果は、下記のような並びになりました。
あ→う→ゔ→お→は→ば
ishitakaさん、ありがとうございます。
ワードプレスの問題ではなく、サーバー上のphpMyAdminの照合順序が影響しているんですね。
phpMyAdminで照合順序をutf8mb4_unicode_ciに変更したのですが、タイトル順は変わらずでした。
問題が照合順序っぽいので、この質問はフォーラム違いですね?
phpMyAdminで照合順序をutf8mb4_unicode_ciに変更したのですが、タイトル順は変わらずでした。
MySQL のバージョン、「ゔ」のコードの違いによるのかもしれませんがちょっと分かりません。
置換する方法はどうでしょうか?
問題が照合順序っぽいので、この質問はフォーラム違いですね?
WordPress の管理画面の問題なのでいいかと思います。ただし、phpMyAdmin や utf8mb4_unicode_ci の詳細に関しては、ここより適した場所があると思います。
テーブルの照合順序を変更しても、カラムの変更順序が utf8mb4_general_ci
などのままだからじゃないでしょうか。
参照順序を変えるとソート順序も変わるんですね・・・当たり前ですけど、知りませんでした。
utf8mb4_general_ci
に変更すると、ひらがなとカタカナの区別をしなくなりますので、ご注意ください。