カスタム投稿でインポート後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を見直して以下の部分を正しく設定することで解決するようです。ホスト名はレンタルサーバーによって設定が異なりますし、データベース名はレンタルサーバーで作成したときに付けた名前になります。

/** WordPress のためのデータベース名 */
define('DB_NAME', 'wplocaldb')

/** MySQL データベースのユーザー名 */
define('DB_USER', 'honyarara');

/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'pass1234');

/** MySQL のホスト名 */
define('DB_HOST', 'localhost');

ちなみに、現時点でカスタムフィールドをどう使おうか考えあぐねているところです。 そんな初心者ですが、生暖かく見守っていただけると幸いです。

スポンサーリンク
スポンサードリンク
スポンサードリンク

シェアする

フォローする

スポンサーリンク
スポンサードリンク