WP Xampp 間の移動時のエラー Fatal error: Cannot redeclare _filter_query_attachment_filenames() (previously declared in C:\xampp\htdocs\wp\wp-includes\post.php:6204) in C:\xampp\htdocs\wp\wp-admin\includes\post.php on line 1184

WP Xampp 間の移動時のエラー Fatal error: Cannot redeclare _filter_query_attachment_filenames() (previously declared in C:\xampp\htdocs\wp\wp-includes\post.php:6204) in C:\xampp\htdocs\wp\wp-admin\includes\post.php on line 1184

Xampp 間の WP の移動を phpMyAdmin でデータベースのエクスポート/インポート(→ Xampp 間の WP のデータ移動 phpMyAdmin 編)をした際に

Fatal error: Cannot redeclare _filter_query_attachment_filenames() (previously declared in C:\xampp\htdocs\wp\wp-includes\post.php:6204) in C:\xampp\htdocs\wp\wp-admin\includes\post.php on line 1184
というエラーが出ました。

この時の症状は、
・localhost/wp にアクセスするとブラウザ上で適正に表示されている
・localhost/wp/wp-login.php にアクセスするとログイン画面は表示されるが、ユーザ名とパスワードを打つこんでエンターすると上記のエラー表示がでる
というものでした。

このような場合、解決の方針としては、大きく二つにわかれ
1、とりあえず直れば良い
2、ちゃんと原因を追及しないと気が済まない
のどちらかになると思います。

通常は時間がないので「1、直れば良い」と選ぶと思いますが、時間があるときは「2、ちゃんと原因を追及しないと気が済まない」というのを何度か経験しておくと何かの際に使える知識がたまってくると思います。

また、Xampp 上の問題は時間をかけられることが多いですが、実際の公開用の生きているサーバでこのような問題が発生すると、「1秒でも早く治さなくちゃ」となって気が焦ってしまいますので、Xampp 上でしっかり肚をくくっておくといざという時に冷静に対応しやすくなると思います。

なおかつ今回は、閲覧用画面は適切に表示はされていたので、もし公開サーバだとしても最大な問題の「何も見えない」というのとは異なるので、冷静に対応しやすいと思います。

さて、今回の
Fatal error: Cannot redeclare _filter_query_attachment_filenames() (previously declared in C:\xampp\htdocs\wp\wp-includes\post.php:6204) in C:\xampp\htdocs\wp\wp-admin\includes\post.php on line 1184

の意味は、簡単に言うと、
「すごく重大な問題が発生しています。ファイルネームがおかしいです。場所はここです」。
C:\xampp\htdocs\wp\wp-admin\includes\post.php on line 1184
てなところで、「この書類の 1184 行目がおかしいよ」、と教えてくれています。

ですが、実際にそれを開けてみてもよくわからないことが多いです。
そのため、他の同様のファイルと見比べて色々調べていくと状況が見えてきます。

ただし、エラー全般的に言えるのですが、
1、WP の環境(プラグイン、ユーザ名や数量、パスワード、その他)
2、MySQL の環境
3、php の仕様
4、サーバの仕様
などが微妙に絡んでくるので、どこかからペタペタってコピペして改善されるかというと、これも微妙です。

結局今回どのように解決したかというと、
A, Xampp 上に WP を新規にインストールする
B, 以下、それぞれの書類を移す
 htdocs/wp/wp-content/plugins
 htdocs/wp/wp-content/themes
 htdocs/wp/wp-content/uploads
C, config 書類
 htdocs/wp/wp-content/wp-config.php
  のおよそ 29 行目以降の mySQL のユーザ名等、
  72 行目あたりの $table_prefix = ‘##_’
 の確認
をして一度ログインしてデータベースが再構築されます。

その後、該当するデータベースを phpMyAdmin で内容を削除して、新たに .sql をインポートして元どおりに直りました。