カスタム投稿でインポート後502エラーが発生し元に戻すまでの顛末
このブログの他に、別分野ジャンルのブログを持っており、諸事情で2つ同時に同じ内容を更新しています。それを1つにまとめたいなぁと思うようになりました。
声優の鈴木正和さんが出演している海外ドラマや映画などの作品、日本語吹替版キャスト&スタッフをまとめているもので記事数が700と割と多めです。
別ブログとしてそのままでもいいんじゃないかと思っていました。もともと無料ブログで運営していたものの、エクスポートするために有料プランに入らざるを得なかったこともあり、レンタルサーバーで複数設置できるのに少額なれど毎月払っていくのもどうかと。
実験的にサブドメインにWordPressをインストールしてデータをインポートし、更新していました。
そのうち、「アフィリエイトを置きたいな…」という野心がフツフツと。
だったら、このブログに集約すればいいじゃないか。
1つにまとめる手段として、カスタム投稿、タクソノミー、カスタムフィールドの3大カスタム要素を使って別分類にする、という結論に達したのでした。
予備知識もなく始めた初心者WordPressユーザーの顛末はいかに。
必要情報をググることの怖さ
関連書籍で買って学んだりドットインストールさんで学んだりなどせず、該当記事をググって見つけ、カスタム投稿とカスタムタクソノミーのコードをコピー&ペーストでfunctions.phpに書き込みました。
ダッシュボードではそれらしい項目が追加され、カスタムフィールドのプラグインもインストールして、後はプラグインWordPress Importerでエクスポートした投稿記事をインポートすれば完成!
…と思いきや。 お気づきの通り、インポートした投稿記事はデフォルトの投稿タイプの中に格納されます。
カスタム投稿タイプのほうに格納できないのか? 700ある記事やカテゴリをどうやって移動・管理すればいいのか。
「WordPress データ移行 カスタム投稿」で再びググり始めます。 一番多かった記事はプラグインCSV Importerに関するものでした。
カスタム投稿やカスタムフィールドが使われる多くは、コーポレートサイトやECサイトではないかと思われます。データ管理を他の表計算アプリケーションで行っていれば、一気にコンバートできるすぐれものプラグインなのかもしれません(未使用のため)。
WordPressの投稿記事を表計算に置き換える…考えたくない。
そう思ったら投稿記事を削除しよう…という考えしか浮かびませんでした。
バックアップを怠らない、削除手順を間違えない
削除は、投稿一覧の記事表示数を20から100に変更。地道にポチポチと削除。最初の5記事に戻し、次にカテゴリ、タグも削除しました。
一度ログアウトし、再表示されるか確認したところで502エラーの嵐。
リダイレクトループを繰り返してWebページが表示されなくなったのです。
恐らくインポートした記事のパーマリンクが悪さした、と思われると考えます。
記事自体削除したとしてもデータベースにはゴミが残っているわけで、スッキリさせる方法はないだろうか。
そこで見つけたのがプラグインClean Options。データベース内に残っていたデータを見つけて掃除することができます。
外部←→内部にアクセスし、編集・削除等をするときはバックアップを必ず取ってください!
実行すると元に戻せないため、うっかり削除してしまうと戻す方法はバックアップデータをphpMyAdminへ書き戻すしかありません。
自分がさらに実行したことは、phpMyAdminからwp-postsとwp-optionsの2つをチェックし「データを空にする」ことでした。これで記事と肥大していたデータはまっさらの状態に。
…本当に呆れますが、これで何とかなると思っていたのです。
Webサイトを見ると「データベース接続確立エラー」の文字が待ち構えていました。
データベース自体は存在しているので、バックアップしておいたSQLファイルをインポートしてようやく最初の状態に戻すことができました。
記事データ自体は残っていて「データベース接続確立エラー」が出た場合は、wp-config.phpを見直して以下の部分を正しく設定することで解決するようです。ホスト名はレンタルサーバーによって設定が異なりますし、データベース名はレンタルサーバーで作成したときに付けた名前になります。
[php]
/** WordPress のためのデータベース名 */
define(‘DB_NAME’, ‘wplocaldb’)
/** MySQL データベースのユーザー名 */
define(‘DB_USER’, ‘honyarara’);
/** MySQL データベースのパスワード */
define(‘DB_PASSWORD’, ‘pass1234’);
/** MySQL のホスト名 */
define(‘DB_HOST’, ‘localhost’);
[/php]
ちなみに、現時点でカスタムフィールドをどう使おうか考えあぐねているところです。 そんな初心者ですが、生暖かく見守っていただけると幸いです。
広告