Wordpressへの直接投稿時、アカウント等が正しく設定されていて投稿できていたのに、急にエラーとなる場合があります。
この原因として、データベースのMySQLでの文字コード設定に問題がある場合があるようです。
(ネットワークやサーバー障害の場合もありますので、これだけというわけではありませんが。)
おおまかな内容・結論としては以下となります
MySQLのバージョンなどにもよりますが、デフォルトの文字コードとしてutf8が設定されている場合があるようです。
また、Wordpressインストール時のデータベーステーブル作成時、MySQLのバージョンや設定によって、文字コード設定がutf8になることがあるようです。
utf8は1文字を1から3バイトで表していますが、パソコンで入力できる文字の中にutf8には収まらない文字があるようです。
これら文字は4バイトで表されます。そしてこれら文字が含まれる文字コードが「utf8mb4」となります。(utf8mb4は1文字を1から4バイトで表します。)
というわけで、これは「4バイト文字問題」と呼ばれているようです。
文字の例:𩸽、🍣、🍺
これらの文字を直接投稿でutf8のフィールドに登録しようとすると、エラーとなるようです。
(Wordpressへのコピペで登録した場合、これらの文字は削除されて登録されるようです。)
phpMyAdminなどでMySQLのテーブルを操作することで、utf8からutf8mb4への変更ができます。
ただし、utf8mb4が設定できるのはMySQLのバージョンが5.5.3以上となっています。
使用しているMySQLバージョンをまず確認してください。(大体のレンタルサーバーは、5.6か5.7になっていると思います)
記事の本文フィールドは、Wordpress標準設定だと、wp_postsテーブルのpost_contentフィールドになります。(スクリーンショットはテーブル名を変更しているので、wpjs_postsとなってますが。。。)
タイトルなども対応する場合は、同じように変更します
照合順序が「utf8_general_ci」など、utf8_から始まる場合は文字コードがutf8です。ちなみに照合順序とは、そのフィールドで並び替える場合の設定のことです。
スクリーンショットではutf8mb4_unicode_ciとなっていますが、個人的に使用しているレンタルサーバーでWordpressをインストールするとこの設定になっていました。
他に、utf8mb4_general_ciやutf8mb4_unicode_520_ciなどありますが、違いについてはMySQLサイトなどで調べてみてください。
照合順序をutf8mb4_から始まるものに変更すると、文字コードもutf8mb4に変更されます。
以下が今回の問題について、参考にしたサイトです。
【特定の文字だけ消える?】ワードプレスで4バイト文字を表示させる方法
https://plus-net.fun/wordpress/4byte-moji.html
WordPress のデータベースの文字コードと照合順序
https://knooto.info/wordpress-db-charset-collation/
MySQLの文字コードとCollation
https://qiita.com/tfunato/items/e48ad0a37b8244a788f6
utf8とutf8mb4の違い【MySQL】
https://penpen-dev.com/blog/mysql-utf8-utf8mb4/
今回の検証のために、dockerでPHP 7.4(apache)+MySQL 5.7の環境を作ってWordpress5.8を新規インストールしてみました。
データベースの文字コードをutf8としても、作成されたテーブルはutf8mb4となっていました。
また、mixhostというレンタルサーバーでWordpressを新規インストールしてみましたが、こちらも最初からutf8mb4で設定されていました。
最新のWordPressの動作要件環境であれば、元々utf8mb4に対応済みかもしれません。
数年前に構築して運用しているようなサイトであればutf8である可能性があるので、確認してみたほうがいいかもしれません。
MySQLの設定などを調べているとMySQLのサーバー設定自体を変更するような方法も出てくるのですが、そこまでの必要はないかなぁという感じです。
サーバー本体の設定とは別に、データベースごとで文字コード設定などは変更できるからです。
以上、間違い等ありましたらご指摘ください。。。
最後になりましたが、今回の問題の解決方法をご連絡いただいた鈴木様には御礼申し上げます!