忘れないように記録しとこ

カバの樹

AffingerのAMPモードでショートタグが削除されてしまうのを防ぐ方法

2020年6月10日

はじめに

先月末からブログのテーマを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;
  • B!