WordPressの文字コードをutf8からutf8mb4に変換した。

2022年01月26日 12時00分 正午の月齢:23.7  月名:真夜中の月  潮汐:小潮 月齢:23.7[真夜中の月] 潮汐:小潮
10か月前に投稿 | WordPress | コメントはありません

4分ぐらいで読めます。

UTF-8の4バイト文字なんて、ないならないであまり困るものではないんですけど、技術的に可能であるならせっかくなので表示させたいと思うようになりました。

WordPress4.2以降で4バイト文字はサポートされているようなのですが、秘伝のタレのごとく15年にわたってデータを継ぎ足してきた当サイトはいつまで経ってもアップデートされる気配がありません。

「ないならないで」なんて強がりを言ったものの、なんとなく置いていかれている感がして心細いので、思い切って変換させてみることにしました。

phpMyAdminで1つずつデータベースを変換なんてしていたらかえって失敗しそう。よし、もうダイレクトに先人の知恵にすがりつくぞ。失敗したらまずいからな。

参考にしたサイトはコレ。

よーく読んで、手順が腑に落ちたところで、やってみます。

wp-config.phpの変更

WordPressのテーマエディタではいじれないので、FTP上から直接編集しました。

/** データベーステーブルのキャラクターセット (ほとんどの場合変更する必要はありません。) */
define('DB_CHARSET', 'utf8mb4');

functions.phpに追記

functions.phpの最後の行に、以下の記述を追記しました。あとで消したくないところを消すのはイヤなので、コメントで囲んでおきましょ。

//あとで消す

if( isset($_GET["upgradeUtf8mb4"]) && $_GET["upgradeUtf8mb4"]==1) {
require_once ABSPATH."wp-admin/includes/upgrade.php";

if ( is_multisite() ) {
$tables = $wpdb->tables( 'blog' );
} else {
$tables = $wpdb->tables( 'all' );
if ( ! wp_should_upgrade_global_tables() ) {
$global_tables = $wpdb->tables( 'global' );
$tables = array_diff_assoc( $tables, $global_tables );
}
}

foreach ( $tables as $table ) {
maybe_convert_table_to_utf8mb4( $table );
}

echo "done.";
exit;
}

//ここまで消す

これはWordPressのテーマエディタからも編集可能ですね。

DBの変換

以下のhogehogeに自サイトのドメインを入れて、実行すると、ほぼ一瞬で変換が終わります。白い画面に「done.」と表示されますよ。

https://hogehoge/?upgradeUtf8mb4=1

functions.phpの追記を削除

functions.phpの最後の行に追記した部分を削除します。その後変換されているかどうか確認してみました。

  • 変換前
    utf8
  • 変換後
    utf8mb4

おほっ、無事に変換されていますね。

まとめ

いきなり本番っていうのはさすがにこわかったので、手持ちの古いサイト2つを使って実験してから本番を実施しましたが、実験も含めて上記の手順で問題なく変換できました。

𠮷𠀋一郎・竈門禰󠄀豆子・𩸽の一夜干し・竈炊き立てごはん𡈽井…

書ける! 書けるゾっ!!

コメントはありません »

[RSS on this post] [TrackBack URI]

コメントをどうぞ

Translate »