特定のタグが含まれるページのみAMPを無効にする【WordPress】

 2021年6月10日
※by Matthew Henry / CC0

AMP 化したは良いものの、iframe 対応の Amazon アソシエイトタグから売上が上がらない状態だったため、Amazon タグが入っているページのみ AMP を無効化しました。

その時の方法を自分用メモ。

AMP 公式プラグインを使っている前提です。

方法は簡単で、function.php に以下のフィルターを追加するだけ。

add_filter( 'amp_skip_post', 'tr_skip_amp', 10, 3 );
function tr_skip_amp ( $skipped, $post_id, $post ) {
	$content = get_the_content();
	$pattern = '/<iframe([^>]+?)(src="([^\/]*)\/\/rcm-fe.amazon-adsystem.com\/[^"]+?").*?><\/iframe>/is';

	if ( preg_match( $pattern, $content ) !== 0) {
        $skipped = true;
    }
    return $skipped;
}
Code language: PHP (php)

関数名は適当に変えて使ってください。

ウチでは AMP 化以降もキャッシュプラグインとして(正式には AMP 非対応ながらも)「W3 Total Cache」を使っており、User Agent を見て PC / SP 版を出し分けつつも、AMP プラグイン(Transitionモード)で AMP ページも出力させていますが、今回のフィルターの対象となった記事でも UA による PC / SP 版の切り替えは機能しています。

ウチでは AMP の切り分けを Query String で行っていますが、今回の方法だと非 AMP ページの URL へリダイレクトされるため、使い勝手も良いです。

他にも方法はあると思いますが、記事の内容やカテゴリ・タグなどをチェックしてから AMP を無効化できるので、便利と思います。

関連情報:

Hatena Pocket Line

コメントを記入