如何嵌套2个第三方Wordpress短代码

时间:2017-06-22 17:18:33

标签: wordpress woocommerce shortcode

我正在寻找一个带有短代码的进度条,需要百分比才能确定其“进度”。但是,我从另一段短代码中得到了我的百分比。

当我嵌套两个短代码时,它们会失败。有谁可以帮助我吗? 下面是插件的短代码文件中的两个代码片段,首先是进度条......

function fruitful_pbar_shortcode ($atts, $content = null) {
 $out = $type = $class = '';
 extract(shortcode_atts(array(
      'id'       => 'ffs-pbar-' . rand( 1, 100 ),
      'type'     => '',
      'active'   => false,
      'stripped' => false
 ), $atts));

if (!empty($id))    { $id   = sanitize_html_class($id); }
if (!empty($type))  { $type = sanitize_html_class($type); }
if (!empty($active))  { $active = sanitize_html_class($active); }
if (!empty($stripped))  { $stripped = sanitize_html_class($stripped); }

$class .= $type;
if ($stripped)  { $class  .= ' progress-striped'; }
if ($active)    { $class  .= ' active'; }



$out .= '<div id="'.$id.'" class="progress '.$class.'">';
    $out .= fruitful_sh_esc_content_pbr(do_shortcode($content));
$out .= '</div>';
$out .= '<div class="clearfix"></div>';
return $out;
}
add_shortcode ("fruitful_pbar", "fruitful_pbar_shortcode");

function fruitful_bar_shortcode ( $atts, $content = null ) {
    $type = $width = '';
    extract(shortcode_atts(array(
                        'type'  => '',
                        'width' => '60%'
        ), $atts));

        if (!empty($type))  { $type = sanitize_html_class($type); }
        if (!empty($width)) { $width = esc_attr($width); }

        return '<div class="bar '.$type.'" style="width: '.do_shortcode($width).';"></div>';
} 
add_shortcode( 'fruitful_bar', 'fruitful_bar_shortcode', 99 );

第二个(位于进度条之后)是获取百分比函数...

if( !function_exists('show_specific_product_quantity') ) {

   function show_specific_product_quantity( $atts ) {

    // Shortcode Attributes
    $atts = shortcode_atts(
        array(
            'id' => '', // Product ID argument
        ),
        $atts,
        'product_qty'
    );

    if( empty($atts['id'])) return;

    $stock_quantity = 0;

    $product_obj = wc_get_product( intval( $atts['id'] ) );
    $stock_quantity = ((12000 - $product_obj->get_stock_quantity()) / 12000) * 100;

    if( $stock_quantity > 0 ) return $stock_quantity;

 }
 add_shortcode( 'product_qty', 'show_specific_product_quantity' );
}

以下是我正在使用的短代码...

[fruitful_pbar][fruitful_bar type="progress-bar-info" width=" [product_qty id="4278"]% " stripped="true"][/fruitful_bar][/fruitful_pbar]

正如您所看到的 - 我在短代码中使用短代码来创建我需要的东西。 提前致谢! : - )

1 个答案:

答案 0 :(得分:0)

在一个变量中获取第一个短代码结果,并将第二个短代码作为属性发送。