web-dev-qa-db-ja.com

ネストされたショートコードは機能しません

ショートコード:

[permalink][title][/permalink]

出力:

<a href="foobar">[title]</a>

WordpressのショートコードAPIが正しい、それは正しいです:

http://codex.wordpress.org/Shortcode_API#Nested_Shortcodes

何か案は?

2
Flex

リンクしたページから:

ショートコードパーサは、それらのハンドラ関数がdo_shortcode()を再帰的に呼び出すことによってそれをサポートするならば、入れ子になったショートコードマクロを正しく取り扱います:

ネストされたショートコードを含む可能性があるショートコードハンドラでは、do_shortcode()を再帰的に呼び出す必要があります。だから、例えば:

function wpse18659_permalink( $atts, $content ){
    return '<a href="' . get_permalink() . '" title="Permalink to ' . get_the_title() . '" alt="">' . do_shortcode( $content ) . '</a>';
}

add_shortcode( 'permalink', 'wpse18659_permalink' );

これはネストされたショートコードをうまく処理するはずです。

5
John P Bloch