WordPressをAMP対応させたい時はAMPプラグインが便利です。しかし、取り扱うコンテンツによってはエラーが多発するため、基本的にカスタマイズが必要です。
(カスタマイズ無しで運用できるサイトであれば、サイト全体をAMP対応にしても良いと思います。)

AMPプラグインのカスタマイズ

GitHubに一通り書かれています。

Automattic/amp-wp

WordPress plugin for adding AMP support

https://github.com/Automattic/amp-wp

以下のソースはfunction.phpに記述します。

カスタム投稿タイプの追加

例えば「blog」という投稿タイプも変換してほしい場合は以下のようにします。

<?php
function amp_add_custom_posts(){
	add_post_type_support('blog',AMP_QUERY_VAR);
}
add_action('amp_init','amp_add_custom_posts',99);

使用不可タグの除去

私の場合は、主に「使用不可タグ」のエラーが出ていました。
<details><summary>だけだったので、許可タグを指定してstrip_tagsするより、str_replaceの方が実装が楽でした。

pre_amp_render_postのアクションフックにWP標準のthe_contentフィルターフックを仕込むという2段階操作。

<?php
add_action('pre_amp_render_post','custom_amp_remove_tags');
function custom_amp_remove_tags() {
	add_filter('the_content','custom_amp_remove_tags_filter');
}
function custom_amp_remove_tags_filter($content) {
	$content = str_replace(
		array('summary>','details>',),
		array('span>','div>'),
		$content
	);
	return $content;
}

ここではそれぞれ<span></div>に置きかえていますが、許可されているタグあるいはプラグインが自動で変換してくれるタグなら何でも良いです。
削除できるのであればこの段階で削除しても良いです。

また、アップデートの度にテンプレートを修正するのが面倒であれば、ここで$contentに広告やシェアボタンを付加しておくとめんどくさくないです。


また、アイキャッチをWP標準のシステムではなく、自分でpostmetaにURLを指定してあれこれするスタイルなので、これでもまだ構造化マークアップの方のエラーが出ています。
なんとかならないかとプラグインのソースコードを見ましたが、どうも直に編集しないといけなさそうなのでこちらは保留。(外部フックでできなくもなさそうだけどそこまでして今頑張る必要性をAMPには感じない。)

スポンサーリンク