したがって、別のネストされたショートコードの問題。[slide] と [prg] の 2 つのショートコードがあります。どちらもショートコードを囲んでいます。[prg] は [slide] にネストされています。しかし [prg] は解釈されません。2 つのショートコードは別々に機能します。do_shortcode() 関数は知っていますが、機能していないようです。理由はわかりません。
ここに私が書いたコードがあります:
add_action( 'init', 'register_shortcodes');
function make_slide($atts, $content = null) {
extract(shortcode_atts(array(
'num' => 1,
), $atts));
$post_title = get_the_title($post->ID);
$wrap = '<div class="slide slide-'.$num.'"><h1 class="h2-like projet_title">'.$post_title.'</h1>'.$content.'</div>';
return $wrap;
}
function wrap_paragraph($atts, $content = null)
{
$content = do_shortcode($content); //I've tried several solutions but none've worked.
return '<p>'.$content.'</p>';
}
function register_shortcodes(){
add_shortcode('slide', 'make_slide');
add_shortcode('prg', 'wrap_paragraph');
}
そして、これがhtmlエディターでの私の投稿(カスタム投稿タイプ)の内容です:
[slide num="1"]<img title="4a6c2a605946a_1080x733" src="http://localhost:8888/labs/noway/wordpress_1/wp-content/uploads/2012/09/4a6c2a605946a_1080x733-460x312.jpg" alt="4a6c2a605946a_1080x733" width="460" height="312" />
[prg]Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus. Morbi ut mi. Nullam enim leo, egestas id, condimentum at, laoreet mattis, massa.[/prg][/slide]
このサイト、sitepoint.com や speckyboy.com などの他の投稿、およびwordpress codex のいくつかの投稿を読みましたが、回答がうまくいきません。おそらく、function.php ファイルでショートコードを正しい方法で実装していないからでしょうか?
誰かが私を助けることができれば? 何が機能しないのかを本当に理解したいです。よろしくお願いします。英語が下手で申し訳ありませんが、理解していただければ幸いです。
編集 コメントを終了する前に愚かに検証したので、次のとおりです。
@maiorano さん、こんにちは。ご協力ありがとうございます。完璧に機能しました。ただし、コードが本当に優れていても、MCE エディターでの人間の介入をできるだけ少なくして、メディア ライブラリから直接画像を取得する必要があるため、そのまま使用することはできません。しかし、それは私に神の道を学ばせました。
また、トップレベルのショートコードに do_shortcode を使用することをテストしましたが、奇妙な結果が得られました: < p > が < div > の外に強制送還されたため、混乱しました。
したがって、私を妨げていたのは、そのトップレベルの do_shortcode っぽいものと、おそらく私の add_shortcode() がショートコードの後に宣言されたという事実の組み合わせだったようです。