WordPressではショートコード(shortcode)といって"[]"を使ってロジックを呼び出すことができます。多くの表示系のプラグインはPHPで記述する方法とショートコードで記事内に埋め込む方法の2通りを提供しています。
そしてショートコードには下記のとおり2つの種類が存在します。
1. 自己完結型
[shortcodeA]
2. 囲い込み型
[shortcodeA]
Contents
[/shortcodeA]
今回お教えするのは2番目の囲い込み型のショートコードを使用する際、入れ子でショートコードを使う方法です。
通常、何もせずにショートコードの中にショートコードを書くとテキストがそのまま表示されてしまいます。
例えばshortcodeAは文字を大きくする機能を持ち、shortcodeBは文字をboldにする機能を持つとします。
下記のように書くと、
aaa
[shortcode_A]
[shortcodeB]
[/shortcodeB]
[/shortcode_A]
bbb
表記結果はこうなります。
aaa[shortcodeB][/shortcodeB]bbb
入れ子の中のショートコードが無視されてしまうということですね。
解決方法
私の場合はshortcodeAがスクロールバーを表示するプラグイン、vr-jscrollpane-shortcodeを使い、shortcodeBにPOST記事のタイトルを表示するプラグイン、display-posts-shortcodeを使う必要がありました。
入れ子で使う場合はvr-jscrollpane-shortcodeプラグインのソースに、「入れ子でつかいますよ!」という一行を付け加えてあげればOKです。
1. 下記のファイルをエディターで開いてください
/wp-content/plugins/vr-jscrollpane-shortcode/vr-jscrollpane-shortcode.php
2. ショートコードを生成している下記のファンクションに赤字の一文を追加してください。
function vr_jscrollpane_shortcode( $atts,$content = null ) {
$content = do_shortcode( shortcode_unautop( $content ) );
これでOKです。上で挙げた赤文字の一行は特定のプラグインに依存するものではないので、ご自身のソースにそのままコピペしていただければ使えます。