ワードプレスが文字化けする要因は多数有り、なかなか切り分けするのは難しいのですがここでは、原因別の文字化け対処方法を書きたいと思います。
テーマファイルの文字コードがUTF8でない
よくある原因の一つに、テーマに含まれているファイルを編集して保存した際に文字コードがワードプレスの標準の物(UTF-8)と変わってしまっているというのがあげられます。
最後に編集したファイルをNotepad++等のエディタで開き、UTF8という文字コードで保存し直してアップロードしてください
下図はNotepad++で文字コードを変更する画面です。
WP Multibyte Patchをあてる
管理画面のプラグインメニューをクリックし、WP Multibyte Patchが使用中になっているか確認し、必ず使用するようにしてください。
日本語環境でワードプレスをお使いになるには必須のプラグインです。もしプラグインに「WP Multibyte Patch」が無かった場合はこちらからダウンロードし、インストール可能です。
リンクのURLが文字化け
ワードプレスのパーマリンクが文字化けしリンク先に接続できなくなる事があります。この場合の対処方法はいくつか有りますが、多くの場合は、htaccessファイルの不正です。パーマリンク設定画面から再度htaccessファイルを書き込み可にして、再設定を保存する、PHP(ワードプレスのプログラミングコード)のデフォルトの文字コードを強制的にUTF8にする等の対策が考えられます。
強制的に、UTF8に文字コードを設定するにはhtaccessファイルに下記のように記載します。
AddType "text/html; charset=UTF-8" .html .php
VPSなどの独自サーバーを使用していてmod_rewriteが有効になっていない場合
mod_rewriteというURLを書き換えるワードプレスで使用する機能が有効になっていない場合、サーバーレベルでURLが文字化けし、ワードプレスがそのURLを取得できなくなり、404 not foundにページがなる場合があります。下記のコマンドをsshで入力しmod_rewriteを有効にすることができます
sudo a2enmod rewrite
また独自サーバーの場合.htaccessによる設定変更を許可しているか確認します。apache2.confやhttpd.conf(サーバーによって場所が違います)もしくは、/etc/apache2/site-available内のdefaultのAllowOverrideをAllに変更します
変更前
<Directory /> Options FollowSymLinks AllowOverride none </Directory>
変更後
<Directory /> Options FollowSymLinks AllowOverride All </Directory>
apacheを再起動します
service apache2 restart
投稿やページの公開時に文字化けする
KDDIのCPIサーバー等、サーバーの文字コード自体がワードプレスの標準文字コードUTF8でない場合、投稿や固定ページの更新時に文字化けする事があります。
この場合の対処方法は、wp-adminフォルダに、php.ini(既にある場合は末尾に記載してください)ファイルをテキストで作り、下記のように記載すると文字化けが修正される事があります
default_charset = "utf-8" mbstring.internal_encoding = UTF-8 mbstring.http_output=UTF-8 mbstring.encoding_translation = Off
また、上記と同様の設定をhtaccessファイルを編集して追加する事も可能です。ワードプレスのフォルダにあるhtaccessファイルの末尾に下記の記載を追加してみてください
php_value default_charset "UTF-8" php_value mbstring.internal_encoding "UTF-8" php_value mbstring.http_output "UTF-8" php_value mbstring.encoding_translation "Off"
投稿の自動変換で文字化け
ワードプレスの投稿は強力なサニタイズ機能(データベースの書き込みの際に意味のあるコードを実行されないように様々な文字を変換)やテキストの自動整形を搭載しています。ただ、この機能が文字化けのような文字出力を発生させる事が有ります。お勧めはしませんが、例えばタイトルの文字列の自動変換を無効にするには外観→テーマの編集より functions.phpに下記のように記載します
remove_filter( ‘the_title’, ‘wptexturize’ );