追伸:少し放置してた間に「amazonアフィリエイトのバナータイプが提供終了」「アカウントが販売実績なく停止」されていたので、今見直しをかけています。
しばらくは古い記事とかでリンクが壊れているものも多いと思いますがご容赦ください。
ーーー
どうもこんにちは、[sampei1]です。
気づいたらブログに貼っていたリンクが無効になってしまってました。
例えばこういうのです(っていうのもなくなったので見えなくなっています)
やや細かい話をすると、AMAZONアソシエイトの場合、一定期間内にお買い物実績がないと、リンクが使えなくなってしまいます。
お買い物実績はカウントされませんが、リンクとしては機能しますので、訪れていただいた方への影響はほぼありません。
ただし、多くはないけどご紹介のお駄賃的なものははいってきませんし、使えなくなったら手で治さないといけません。これがなかなか面倒。
古いのを消すとか、新しく取得したアカウントに変更するとか。
普通にプラグインなどを使わずやろうとしたら
①管理画面に入り、使えなくなったIDで検索をかける
②出てきた記事を開いて、古いIDが書かれた場所を見つけて手で治す
③保存しなおして、動作するか確認する
というめんどくさい作業をしなくてはいけません。
ブログで書いたのが1記事とかだったら、まぁ仕方ないか、と思いつつ手で治したかもしれませんが、数百になるとしたらちょっと厳しいですよね。
注意
まず言っておきたいのは、失敗しても元に戻せるようにしておかないといけないということ。
DBを直にいじるのですから、編集文字列に全角文字が入ってた、とかコピペをミスったとかで復元不可能になる可能性もあります。
とりあえずバックアップの取り方を書いたので、必要であればそちらを参照ください。
簡単に言えば、phpMyAdminのエクスポート機能を使って、DBまるごと復元可能なファイルを作るというものです。
※WPでは一番メジャーなのがMySQLorMariaDBと思ってこう書いてますが、もしかしてポスグレとかMS、まさかのoracleを使ってたらごめんなさい。。ただ基本やることは同じです。
phpMyAdminで一括置換をする
プラグインはおいておいて、大事なのは記事内の記載内容の変更かと思います。
DB全体で検索するのも悪くはない、というか正しいんですが、目的を果たすのに時間がかかるのとトラブル発生する可能性があるので、記事データ以外には触れていません。
Rinkerとか使ってる方はプラグインのテーブルでも山ほど変更箇所があると思いますが、そこは緊急ではないのでおいときましょう。
開くテーブルは「〇〇〇posts」です。
※〇〇部は最初に作るときに”接頭語”として登録したものになります。要は人によって変わってきます。
文字数は決まってはいません。人によりけりです。
ちなみにここは、1つのDBに複数のブログを同居させるときなどは、分けて保存しておくためにブログごとに変えておく必要があります。
で、その接頭語を指定してるのは”wp-config.php”の150行目あたり。
変更したくなっても安易に変えないように。自分でトラブルを呼び込むようなもんです。
ここでは”dqw_”になります。何も意識しなければ”wp_”になっているかもしれません(これがDefault値)
なお、決められた接頭語とpostsの間に文字列が入っていたら、それはプラグインのものなので、とりあえずスルーでいいです。というか触らないでください。
(AllInOneSEOとかで使ってたりする)
ここで決めたワードの後ろに、WordPressの基本テーブルが作られるようになります。
※本家で探したけど、古い情報しかなかったのでこちらを掲載
ここまで来たら終わりが見えてきた感じです。
あとはWP_POSTで検索をかければ、治すべき箇所が出てきます。
phpMyAdminを開いてみましょう。
上の「検索」を押します
出てきた画面の”post_content”の「値」に”%-22%”と入れてください。
意味としては、投稿記事が作成されると、本文はここに格納されるから検索対象にしています。
検索キーについては、AMAZONアソシエイトのIDで必ず使われる末尾についているワードなので、とりあえずこれを使っています。「22日」「ID:x-22」とかも引っかかる可能性はありますので、少し気にしておいてください。
一括置換時はきちんとしたワードで置換をかけますので、心配はいらないです。
両端の%はワイルドカードです。演算子がLikeのあいまい検索になっているので、こういうときは%で挟んであげてください。*はSQLだとあまり使われないです。
ちなみに演算子のプルダウンで”LIKE %…%”というのもあったので、その場合はキーワードだけでOKで。もひとつおまけに書くと、その演算子のところで”REGEXP”もあるので、その場合は正規表現で検索をかけることもできます。正規表現の話はしだすと日が暮れるのでやめておきますw
検索で壊れることはまずないので(たぶん)、いろいろ試してみてください。
これが検索結果が出てきたところです。若干はずいので一部マスクかけています。。
一覧では分からないことも多いので、中身を開いてみましょう。左端の「編集」を押してください。
それっぽいものがありました(ちなみにこの画像は置換作業後にとったものです)。
みつかればOKです。実行に移りましょう
新旧のIDを一括で置換する
IDが存在することが分かったら、置換します。同じくphpMyAdminを使います。
それとは別にテキストか何かのテキストエディタを開いてください
書くものは
・古いアソシエイトID
・新しいアソシエイトID
・SQL文
です。
SQLは
update ★確認した接頭語★posts set post_content=replace(post_content, "★古いID★", "★新しいID★");
です。
これらを一度テキストファイルに書いてみてください。
ないとは思いますが文字化けとかするとまずいので、SQL文のセミコロンは行末の1個だけだと書いておきます。
★で挟んだ部分を置き換えて使ってください。
例としては
update dqw_posts set post_content=replace(post_content, "dqwoldid-22", "dqwnewid-22");
ですかね。出来たら次に進んでください。
置換します
ひらがなで打って変換するまでとっても微妙な感じなんですが、とりあえずすすめます。
先ほど書いたSQL文を丸ごとコピーしてブラウザに貼り付けます。
テーブル名が正しいことを確認しておいてください。
1行入ったなと思ったら、思い切って右下の「実行」を押しちゃってください。
「本当に実行しますか」とかビビらせて来る時もあるので、OKを押しちゃってください。
画面が変わって、X行クエリを実行しました、とか言われます。この場合の行数はイコール件数だと思います。想定より多いか少ないかで、再度検索してみるとかが必要かもしれません。
まとめ
今回はphpMyAdminを使ってSQLをいじりました。戻せることが分かればいろいろできると思いますので、SQLの勉強にもなるのでおすすめです。
繰り返しますが、戻せる準備をしてから実施願います。
お疲れさまでした。