WordPress data-original内のショートコードがそのまま表示されてしまう

ショートコードが反映しない原因がわからず放置すること1年。。

function.phpに以下の記述を追加するとテンプレートディレクトリパスを呼び出すのに[template]というコードで表示させることが可能になります。(投稿ページや固定ページの管理画面に記述する場合)

function shortcode_tp() {
  return get_template_directory_uri();
}
add_shortcode('template', 'shortcode_tp');


しかし以下のような場合(主にlightboxを使用している場合)

<li><a href="[template]/images/photo/001.jpg" data-lightbox="group"><img data-original="[template]/images/photo/s001.jpg" src="[template]/images/dummy.jpg" alt=""></a></li>

hrefやsrcのショートコード[template]は反映するのだが、data-originalのショートコード[template]は変換されずそのまま[template]と表示されてしまう。

data-original属性がショートコードに対応していないのが原因らしいので、function.phpにさらに記述を追加します。

add_filter( 'wp_kses_allowed_html', 'my_wp_kses_allowed_html', 10, 2 );
function my_wp_kses_allowed_html( $tags, $context ) {
  $tags['img']['data-original'] = true;
  return $tags;
}

これでdata-original属性の場合でもショートコードを使うことが可能になりました。

2018年05月