Amazonアソシエイト AWS動作デモページ

WordPress > 動作デモページ > Amazonアソシエイト AWS動作デモページ

前回のAWSのサンプルコードの動作デモページです。

動作状況がかなり不安定です。
AWS(Amazon WEB Service)検索フォーム(デモ)

ワードプレスのリライト介入を回避する方法。

ワードプレスのようにリンクで存在しないページURLを指定すると強制的にエラーページやサイトホームへと遷移してしまう環境に限ってのはなしになりますが、この挙動が原因でページャーで思うように遷移できない現象が生じます。

これを解決するには下記のコードをご使用のワードプレステーマのfunctionsファイル内に記述します。

function aws_redirect( $rewrite_url ) {

	if ( is_single() ){
		 // ページャーURLに「?Keywords=」が含まれているかどうかで判定
		$pattern = '/\?Keywords=/';
		preg_match($pattern, $rewrite_url, $matches);

		if ($matches){
		  //ページャーURLに「?Keywords=」が含まれていればリライトさせない
		  $rewrite_url = false;
		return $rewrite_url;
		}
	}

}
add_filter('redirect_canonical','aws_redirect');

特定の条件に限ってリライトさせないようにします。

これでページ移動が正常に行えるようになるのですが、もうひとつ解決しなければならない問題があります。

ページャーで生成するリンクURLはスクリプトを貼り付けたページを元に作成する必要があるので、「カレントURL + &page=2」のようにすればよいように思えますが、3ページ以降になると「カレントURL + &page=2&page=3」のような変なURLになってしまいます。

ですのでサンプルコード内のページャー部分を下記のように変更します。

// サンプルコードを貼り付けたページURLを取得
$currenturl = ((empty($_SERVER["HTTPS"]) ? "http://" : "https://") . $_SERVER["HTTP_HOST"] . 
$_SERVER["REQUEST_URI"]);

// URLの中に「&」が含まれていればカレントURLの中から「&」以降を削除
if(strstr($currenturl, "&")){
  $die = strstr($currenturl, "&");
  $currenturl = str_replace($die, "", $currenturl);
}

// ページャーリンク生成部分
$url_a ="<a style='background-color: #ffffff; color: #ff0000; margin: 0; padding: 0.2em 0.5em; border: solid 1px; text-decoration: none;' href=\"$currenturl&ItemPage=";