WordPress短代码内的短代码

时间:2015-03-10 23:17:12

标签: php jquery wordpress shortcode

使用终极短代码插件(灯箱短代码)和一些自定义样式,我经常在我的网站上创建弹出窗口。我试图通过在自定义短代码中包含短代码和自定义样式来简化用例。

因此,例如,这是我需要输入以获得所需效果的代码:

<p style="text-align: left;">[su_lightbox type="inline" src=".123"]Some Name<i class="fa fa-chevron-right float-right"></i>[/su_lightbox]</p>
<div class="123 mfp-hide">
This is the content
</div>

这是我尝试将上述内容转换为短代码:

// Add Shortcode
function person_shortcode( $atts , $content = null ) {

    // Attributes
    extract( shortcode_atts(
        array(
            'name' => 'name',
            'numb' => 'numb',
        ), $atts )
    );

    // Code
return '<p style="text-align: left;">[su_lightbox type="inline" src=".'.$numb'"]'. $name .'<i class="fa fa-chevron-right float-right"></i>[/su_lightbox]</p>
        <div class="'. $numb .' mfp-hide">
        '. $content . '
        </div>';
}
add_shortcode( 'person', 'person_shortcode' );

所以我的问题是如何才能完成上述工作?

到目前为止,我已尝试用Firebug内部的输出替换su_lightbox短代码,但这不起作用。

1 个答案:

答案 0 :(得分:1)

您可以在短代码回调返回的字符串上手动调用do_shortcode。以下内容应该有效:

// Add Shortcode
function person_shortcode( $atts , $content = null ) {

    // Attributes
    extract( shortcode_atts(
        array(
            'name' => 'name',
            'numb' => 'numb',
        ), $atts )
    );

    // Code
return do_shortcode( '<p style="text-align: left;">[su_lightbox type="inline" src=".'.$numb.'"]'. $name .'<i class="fa fa-chevron-right float-right"></i>[/su_lightbox]</p>
        <div class="'. $numb .' mfp-hide">
        '. $content . '
        </div>' );
}
add_shortcode( 'person', 'person_shortcode' );

此代码部分中也存在语法错误:

src=".'.$numb'"]'

您可能打算这样做:

src=".'.$numb.'"]'

我已在上面的示例中解决了这个问题。