バリューコマースWEBサービスの動作デモページ

ウェブサービス > 動作デモページ > バリューコマースWEBサービスの動作デモページ

前回、解説したバリューコマースWEBサービスのサンプルコードをワードプレス投稿欄に貼り付けて動作を確認するためのデモページです。
バリューコマースWEBサービス検索フォーム(デモ)

ページャーでページを移動する際、ワードプレスのリライト機能の介入により、エラーページ、あるいはサイトホームへと強制的にリダイレクトされてしまい、2ページ以降を参照することが出来ません。

サンプルコードが貼り付けられている個別ページが実行ファイルとなっていて、この1つのページを基に、内容が入れ替わる形で表示されているだけなのですが、2ページ以降も引き続き、このページ上でプログラムを動作させる必要があるため、リライト機能介入によるリダイレクトを回避しなければなりません。

とは言っても、パーマリンクの設定で静的URLを割り当てているケースもあり、リライト機能全般を停止させるわけにはいきませんので、特定の条件下に限り、リライト機能を停止させるようにします。

下記のコードはページ移動先のURLに「?keyword=」が含まれている場合に限り、リライト機能を停止させるコードです。

ワードプレステーマフォルダ内のfunctionsファイル内に記述します。

function vc_redirect( $rewrite_url ) {

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

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

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

これでリライト機能の介入が回避され、ページャーリンクURLが反映され、ページャーが機能するようになるのですが、もうひとつ解決しなければならない問題があります。

ページャーで生成されるリンクURLはスクリプトを貼り付けたページ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&page=";

これで3ページ目以降も正常にページャーリンクが生成されるようになります。