WordPressはLAMP環境で動くCMSとして昔から有名ですが、昔から使われているサイトの場合、絵文字が使えないことがあります。
今回はそういう場合の絵文字を使えるようにしてみましょう
MySQLのバージョンを調べる
使えるようにしましょうといいつつ、実は大前提があります。それはMySQLのバージョンが5.5以降であることです。
それ未満のバージョンは「utf8mb4」にできないため、絵文字が使えません。
テーブルの照合順序を変更する
ここからはphpMyAdminを使って作業を行います。phpMyAdminが使えないまたはコマンドでやるよって方はコマンドで実行してください。
今回変更するテーブルはwp_posts およびwp_postmeta です。
サイト名やユーザー名も絵文字を使う場合はwp_optionsやwp_usersも変更すればいいですが、ほぼ投稿周りでいいと思うので、今回は投稿周りのフィールドだけ作業を行います。
phpMyAdminから見た場合のwp_postsです。
![](https://blog.8bit.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-18-144603.png)
ここのpost_content, post_title, post_excerpt, post_status, post_password, post_name の 照合順序を確認します。
「utf8_general_ci」になっている場合、絵文字を扱えないため、上記のフィールドにチェックを入れて「変更」を押します。
![](https://blog.8bit.co.jp/wp-content/uploads/2024/07/スクリーンショット-2024-07-18-150256.png)
編集画面で照合順序があるので「utf8mb4_general_ci」にして「保存する」を押します。
post_contentを入れた場合、エラーが出る場合があるので
1 2 |
ALTER TABLE wp_posts MODIFY post_content LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
のようにクエリーを別途動かした方がいいかもしれません。
(なぜか「ALTER TABLE wp_posts
CHANGE post_content
post_content
BLOB;」ってやちゃうんですよね)
同様にwp_postmeta も
のようにmeta_valueの照合順序を「utf8mb4_general_ci」に変更します。
これで投稿とカスタムフィールド両方とも絵文字が使えるようになります。
最近の事情
最近のレンタルサーバーはMySQLのデフォルト設定がutf8mb4になっているので絵文字は使えたりしますが、自分でMySQLをインストールしたり、昔のデータベースを継続して使っている場合はutf8のままだったりするので、utf8mb4へ変更する必要があります。また、データが壊れることはないとは思いますが念のためバックアップはしっかりとっておきましょう