Amazonアソシエイトで廃止の画像リンクをWordPress記事から一括非表示させる

公開 | 更新 
図4.空っぽの画像リンクへ入れ替え

Amazonアソシエイト ツールバーから 画像リンク 生成機能が消えて間もなく、既存の 画像リンク も 廃止 でリンク切れ状態に。このまま WodrPress ブログ内に大量のリンク切れコンテンツを内包することは、SEOの観点から低質なコンテンツと見なされ兼ねないので、スクリプトで 画像リンク を 一括 非表示 する仕組みを考えました。

Amazonアソシエイトの全画像リンク壊れる

前回の記事で、せっかくAmazonアソシエイトツールバーから消えた画像リンクを自前で生成するスクリプトを組んだのもつかの間、画像リンクのリダイレクト先ドメインからレコードが削除され、既存の画像リンクが全てリンク切れになってしまいました。

図1.画像リンクのリダイレクト切れ

図1.画像リンクのリダイレクト切れ

大量のリンク切れをサイト内に放置しておくのは宜しくないので、WordPress管理画面でこれまでに書いた記事のうち、Amazon画像リンクを含むものを抽出してみると、既に公開済み記事で280弱。

図2.画像リンクのある過去の投稿リスト

図2.画像リンクのある過去の投稿リスト

これ一つ一つ手作業で対応するにも莫大な時間が掛かることから、スクリプトでコンテンツを一括置換して対処する方法を考えます。

 

ページロード時にJavaScriptで非表示に

まずは、WordPressに限らず汎用的な仕組みをJavaScriptで組んでみました。

Amazon画像リンクは <iframe></frame> タグで構成されています。一方、ページ内には他にも <iframe> タグがいるかも知れませんが、 classid は含まれていないので src 属性のURLから類推して、Amazon画像リンクの場合は src 属性を削除します。

図3.画像リンク削除するJavaScript

図3.画像リンク削除するJavaScript



WordPressでは、 functions.php に次の記述を加えて、JavaScriptファイルをロード、実行するように設定します。

wp_enqueue_script の最後のオプションを後読みにして、htmlの </body> を読んでからロードするようにしないと、期待通りに動いてくれません。

スクリプトの適用結果は以下の通り。 <iframe> は存在したままなので不自然な空白は残ったまま。

図4.空っぽの画像リンクへ入れ替え

図4.空っぽの画像リンクへ入れ替え

サーバ側PHPでiframeタグを削除

次はもう少し手前、サーバサイドのPHPでWordPressがhtmlを組み立てる時に、Amazon画像リンクの <iframe></iframe> を一括置換削除する方法です。

functions.php に加える次の記述では、記事の内容が格納された the_Content 変数の中身を、 preg_replace() 関数で置換削除しています。

こちらは <iframe> タグごと削除しているので、空白はありません。

図5.PHPで画像リンク置換削除

図5.PHPで画像リンク置換削除

 

その他には試していませんが、WordPressのSearch Regexプラグインを使って、データベース内の投稿記事を正規表現で一括変換してしまうのが、もしかすると一番スッキリする方法かもしれません。

ともあれ、これでリンク切れを晒すことは回避できたので、急ぎ代替プラグインの導入へ取り組みたいと思います。

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA