
ブログを書いていると、Amazon の商品リンクを貼る機会はかなり多くなります。とくにレビュー・機材紹介・トラブルシューティングの記事では、商品URLを何十本も扱うことも珍しくありません。
ただ、このリンク管理が意外と大変で、手作業でパラメータを付けたり、外注ライターさんにルールを共有したりと、運用負荷がジワジワ増えていきます。
そこで、記事に「Amazon の商品URLを貼るだけ」で 必要なパラメータが自動付与され、フォーマットも統一される仕組み を WordPress 側に組み込みました。結果として、リンク管理そのものを考えなくてよくなり、運用が一段軽くなりました。
なぜ Amazon リンクは“自動最適化”した方がいいのか
運営が進むほど、リンク管理は手作業では破綻しやすくなります。
- 記事数が増えるとリンクの統一ルールが崩れる
- パラメータの付け忘れが頻発する
- ライターごとに表記ブレが出る
- 過去記事のリンク仕様だけが古くなる
Amazon の商品リンクは特に数が多いため、“サイト側で統一ルールを担保する” 仕組みがあるとメリットが大きいです。
私が導入したロジックは次のような思想で設計しています:
- 既に記事に存在している Amazon URL は絶対に変更しない
- 新しく追加された Amazon URL のみ自動最適化する
- すでにパラメータが付いている URL は上書きしない
- /dp/◯◯ のような商品ページだけを対象にする
- 投稿者側の操作はリンクを貼るだけでOK
これだけでリンク統一とミス防止の両方が実現できます。
実際に使っている WordPress 自動最適化コード(Amazon 専用)
子テーマの functions.php に貼ればそのまま動きます。
/**
* Amazonリンクの自動最適化ロジック
* ・既存リンクは変更しない
* ・新規Amazon商品リンクだけ自動でパラメータを付与
*/
function auto_optimize_amazon_links($content, $post_id) {
// AWS アソシエイトIDなどに使うパラメータ(例)
$auto_param = 'tag=yourtag-22';
// 過去の本文(既存リンク判定用)
$old = get_post_field('post_content', $post_id, 'raw');
// Amazon 商品ページURLを抽出する正規表現
$pattern = '/https?:\/\/(?:www\.)?amazon\.co\.jp\/[^\s"\']+/u';
return preg_replace_callback($pattern, function ($matches) use ($old, $auto_param) {
$url = $matches[0];
// 既存本文に存在するURL → 変更禁止
if (strpos($old, $url) !== false) {
return $url;
}
// すでに tag= がある場合 → 上書きしない
if (strpos($url, 'tag=') !== false) {
return $url;
}
// /dp/xxxx の形式(商品ページ)だけ最適化
if (!preg_match('/\/dp\/[A-Za-z0-9]+/i', $url)) {
return $url;
}
// ? の有無で & or ? を決める
$delimiter = (strpos($url, '?') !== false) ? '&' : '?';
return $url . $delimiter . $auto_param;
}, $content);
}
add_filter('content_save_pre', 'auto_optimize_amazon_links', 10, 2);
この仕組みで運用がどう変わるか
このロジックを入れてから、Amazon リンクは「貼るだけでOK」になりました。
外注ライターさんも、Amazon商品URLをそのまま貼るだけで、自動的に最適化済みリンクに変換されます。
- リンク管理の属人化が消える
- 運営が大きくなっても品質が安定する
- 過去記事を触らず、未来の記事だけ最適化できる
- WP 側のルールでリンク仕様が統一される
Amazonリンクを多用するサイトなら、この自動最適化は“運営者の負担を確実に減らす仕組み”になります。