炭火Blog

AmazonアソシエイトのAPIを使えるようにする近道[WordPress]

Blogging
codewordpress

※このページにはプロモーションが含まれています。

Table of Contents

このブログでもお世話になっている「Amazonアソシエイト」ですが、最近になって、いろいろな機能が廃止されています。

当ブログにとって最も大きな変更は、アソシエイトツールバーから「画像とテキスト」のリンクが取得できなくなった事です。アクセス数が多くどんどん商品が買われるサイトなら問題は無いのですが、当ブログのようにアクセスの殆ど無いサイトの場合は大きな問題となります。

当ブログではAmzon PA-APIを利用してアソシエイトの商品リンクを掲載しています。

Amazon Products Advertising API 5.0

Amazon PA-API v5.0を利用した商品紹介リンクを作る

炭火Blog

アソシエイトの商品リンクを作る方法は沢山あり、プラグインを使ったり、ASPが発行する物を使ったりできます。もしもアフィリエイトの「かんたんリンク」を使うと、複数の画像とAmazonを含む複数のECサイトのリンクが、文字通り簡単にできます。ただ、JavaScriptを使っていてページの読み込みがかなり遅くなるデメリットは有ります。

無制限に使えないAmazon PA-API

APIを使えば、ページの読み込みに影響がなく、アドブロックのフィルタに掛からず、何より自分の好きに作れます。

ただし、このAPIは30日間に渡って売上が無い場合はデータの取得ができなくなります。ブログを初めて約1年半、少しずつアクセスが増えて励みになっていたのですが、昨年の10月にあったGoogle検索のアルゴリズムの変更で、アクセス数が3分の1になりました。

元々少ないアクセスが更に減ってしまったせいで、30日間の間に売上が無い可能性が出てきました。

以前は、APIが使えなくなった場合は、画像とテキストのリンクを貼り直して、売上実績を作り、再度APIを使えるようになるまで待つという方法が使えたのですが、現在はそれができません。

Amazonセールとイベント

API利用リンクとテキストリンクの違い

現在、Amazonから提供されている唯一の商品リンクを使って商品の名前を使い、カスタムHTMLで表示させると、次のように表示ができます。

WordPressユーザーのためのPHP入門 はじめから、ていねいに。[第4版] 単行本(ソフトカバー) – 2024/3/15 水野史土 (著)

APIを使ってデータを取得したリンクは下のようになります。(何もない場合はAPIが使えない状態です。)

WordPressユーザーのためのPHP入門はじめから、ていねいに。[第4版]

やっぱり画像があったほうが商品が分かりやすいように思います。

30日間売上がなかった時の対応

このままだといずれはAPIが使えなくなる事がありそうなので、対策を考えなければと思います。

かんたんリンクを使うのには他にも理由が有り、現在のAmazonアソシエイトの規約ではAPIで取得したデータを使って他のサイトへのリンクを作る事が禁止されているのからです。規約については別の投稿で考察します。

もしもアフィリエイトで申請し、許可をもらえれば売上実績を気にする必要が無くなり、楽天など他のECサイトへのリングが同時に掲載できます。ただし、APIを使った商品リンクに切り替えることはできません。APIを使えるようにするにはAmazonが提供するリンクを使わないといけないからです。

そこで考えたのは、APIが使えるまではセール情報などを全てのページに同じものを掲載して、販売実績ができたらAPIを使ったものを掲載する方法です。APIを使った商品リンクはAPIによりデータが取得できない場合は、エラー表示などはさせずに何も表示をさせないようにします。

すべての投稿ページにテキストリンクを貼ったりはずしたりするのは手間がかかりすぎるので、テキストリンクは一括で管理します。

Amazonのページで情報を探す

AmazonのトップページにPCでアクセスすると、上部にあるスライダーにセール情報などがあり、他にも特集などの情報がも見つかります。そのページのアソシエイトツールバーで自身のアソシエイトタグを含んだ短縮アドレスを取得します。

表示する文章はAmazonのページに書かれているものと同じにすると無難です。大げさな表現や虚偽の文章を書くと規約違反になります。

PHPコードをfunctions.phpに追加

下のコードをfunctions.phpに加えると全ての投稿ページの2番めのH2の直上にAmazonの広告を表示できます。

<?php
function ad_before_h2($the_content) {
    // 変数 $ad に広告のHTMLを代入します
    $ad = <<<EOF
    <div class="ad-amazon">
    <p><span>Amazon</span>セールとイベント</p>
    <ul>
    <li><a target="_blank" href=https://amzn.to/XXXXXXX rel="sponsored noopener">○○○○○○○○○○○○○○○○○○○○○○○○</a></li>
    <li><a target="_blank" href=https://amzn.to/ZZZZZZZ rel="sponsored noopener">○○○○○○○○○○○○○○○○○</a></li>
    </ul>
    </div>
    EOF;

    // シングル投稿ページ (is_single) で <h2> タグを探し、広告を挿入します
    if (is_single()) {
        $h2 = '/^<h2.*?>.+?<\/h2>$/im';
        if (preg_match_all($h2, $the_content, $h2s)) {
            if ($h2s[0]) {
                if (isset($h2s[0][1])) {
                    $the_content = str_replace($h2s[0][1], $ad . $h2s[0][1], $the_content);
                }
            }
        }
    }

    return $the_content;
}

add_filter('the_content', 'ad_before_h2');
?>

ちなみに表示箇所を変えるには

if (isset($h2s[0][1])) {
                    $the_content = str_replace($h2s[0][1], $ad . $h2s[0][1], $the_content);
if (isset($h2s[0][2])) {
                    $the_content = str_replace($h2s[0][2], $ad . $h2s[0][2], $the_content);

と変更すると3番めのH2の直上に表示されます。

CSSの例としては

.ad-amazon {
    border: solid 1px #ccc;
    width: fit-content;
    margin: 1.5em auto;
    padding: 20px 20px 0
}

.amm span {
    color: #e78106
}

.amm p {
    margin-block-end: 1em;
    text-align: center
}

本当は多くの人に役に立つ、面白い文章を掛ければ、APIが使えなくなる心配をしなくて良いのですが、それが最も難しいことなので困ったものです。

最後までお読みくださり、誠にありがとうございます。

WordPressオリジナルテーマ制作入門

関連投稿

週間アクセスランキング

このブログを書いている人

管理者 ほんだ

数多くあるブログの中で、このページをお読みくださりありがとうございます。このブログは、炭火で美味しいものを作ることを中心に、日々の趣味についてを文章にすることで、WordPressを使ってのWebページ作成を忘れないようにしています。熱帯魚の世話や野菜の栽培、Linuxについて興味のあることを、つたない文章で綴っています。兵庫県在住です。