目次
はじめに
先月末からブログのテーマをAffingerに変更しました。
中身を魔改造してしまいましたが、ほぼほぼAffingerの機能を保っています。
さて今回の本題ですが、AffingerはデフォルトでAMPのサポートをしています。
このAMPですが、有名なプラグインを使ったAMPとは違って、プラグインなどで設定したショートコードを無効化しています。
そのせいでSyntaxHighlighter EvolvedなどのソースがAMPになるとごっそり消えてしまいます。
なので、Affingerに用意された除外フィルターを使って、ショートコードの無効化を防ぎます。
フィルターの設定
下記をfunctions.phpに記述します。
function add_amp_allowed_shortcode_tags($allowed_shortcode_tags) {
// [php],[shell],[css],[javascript],[html]のショートコードを削除から除外
array_push($allowed_shortcode_tags, 'php', 'shell', 'css', 'javascript', 'html');
return $allowed_shortcode_tags;
}
add_filter('st_amp_get_allowed_shortcode_tags', 'add_amp_allowed_shortcode_tags');
解説
st_amp_get_allowed_shortcode_tags というフックが用意されているので、add_filter で呼び出します。
add_filter('st_amp_get_allowed_shortcode_tags', 'add_amp_allowed_shortcode_tags');
引数$allowed_shortcode_tags の配列に、AMPの時に削除されたく無いショートコード名を設定します。
上記の例は、array_push というPHPの関数で、'php', 'shell', 'css', 'javascript', 'html' を $allowed_shortcode_tags の配列に追加しています。
array_push($allowed_shortcode_tags, 'php', 'shell', 'css', 'javascript', 'html');
設定後にreturnで $allowed_shortcode_tags を返却します。
return $allowed_shortcode_tags;