我已经安装了_s主题,并且几乎没有开始研究它。
我正在尝试嵌套名为" b
"的短代码在一个名为" cb.
"的短代码中这是我的代码(来自functions.php
文件):
// Short Code
function box_shortcode( $atts, $content = null ) {
extract(
shortcode_atts(array(
's' => '1'
), $atts));
if($s == '1') { $box_classes = 'c1_4 aside'; }
if($s == '2') { $box_classes = 'c2_4 main'; }
if($s == '3') { $box_classes = 'c3_4'; }
if($s == '4') { $box_classes = 'c4_4'; }
return '<section class="' . $box_classes . '">' . $content . '</section>';
}
add_shortcode( 'b', 'box_shortcode' );
function contentblock_shortcode( $content = null ) {
return '<div class="inner">' . do_shortcode($content) . '</div>';
}
add_shortcode( 'cb', 'contentblock_shortcode' );
add_filter('the_content', 'do_shortcode');
答案 0 :(得分:2)
add_filter('the_content', 'do_shortcode');
不需要。
你们两个都应该把atts和content作为属性,你的OUTER(不是内部)函数里面应该有一个do_shortcode
。最终代码应该是这样的:
function box_shortcode( $atts, $content = null ) {
extract(
shortcode_atts(array(
's' => '1'
), $atts));
if($s == '1') { $box_classes = 'c1_4 aside'; }
if($s == '2') { $box_classes = 'c2_4 main'; }
if($s == '3') { $box_classes = 'c3_4'; }
if($s == '4') { $box_classes = 'c4_4'; }
return '<section class="' . $box_classes . '">' . $content . '</section>';
}
add_shortcode( 'b', 'box_shortcode' );
function contentblock_shortcode( $atts, $content = null ) {
return '<div class="inner">' . do_shortcode($content) . '</div>';
}
add_shortcode( 'cb', 'contentblock_shortcode' );
如果您将短代码用作[cb][b]content[/b][/cb]
如果您想以相反的方式使用它们,请将do_shortcode($content)
移至函数box_shortcode( $atts, $content = null )
答案 1 :(得分:0)
我认为问题是你的contentblock_shortcode
函数需要$content
作为它的第一个参数,而它应该先$atts
。将其更改为function contentblock_shortcode($atts, $content = null)
应该允许内部do_shortcode
仅将内容传递到内部部分中的do_shortcode
方法。