因此,另一个嵌套的shortcodes问题。 我有两个简码:[幻灯片]和[prg]。它们都包含简码。 [prg]嵌套在[幻灯片]中。但[prg]不解释。 这两个简码很好地分开工作。 我知道do_shortcode()函数,但它似乎不工作,我不知道为什么。即使使用do_shortcode()函数,WordPress嵌套Shortcodes也不起作用
下面是我写的代码:
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,以及the wordpress codex,但答案不适合我。 也许这只是因为我没有在我的function.php文件中实现shortcodes正确的方式?
如果有人能帮助我?我真的想知道是什么让它无法正常工作。提前致谢。 对不起,我的英语不好,我希望我能理解。
编辑 我stupidely验证我的意见整理之前,所以它是:
喜@maiorano并非常感谢您的帮助,它的工作完美。 但是,即使您的代码真的很好,我仍然无法使用它,因为我需要直接从媒体库中获取图片,尽可能减少人为干预MCE编辑器。但它使我学会了一种虔诚的方式去。
另外我已经测试过使用do_shortcode进入顶级短代码,但它产生了一个奇怪的结果:我的< p>被驱逐出了< div>,所以我感到困惑。
所以看起来阻塞我的是顶级do_shortcode-ish的组合,也许我的add_shortcode()是在短代码之后声明的。
喜@maiorano并感谢了很多你的帮助,它的工作完美。但是,即使你的代码真的很好,我也不会使用它,因为我需要直接从媒体库中获取图片,尽可能少地人为干预MCE编辑器 –
这很好,它主要是建议。很高兴我能帮上忙。 – maiorano84
你帮了很多人。 Thx再次。 :-) –