使用 WP Shortcode 作为另一个 Shortcode 中的属性

Use WP Shortcode as an attribute in another Shortcode

我正在尝试使用高级自定义字段插件简码作为另一个简码中的属性。

制作我的主题的公司目前不提供定制支持。

原来的短代码是这样列出的

public function plan( $atts, $content )
    {
        $html = array();

        extract( shortcode_atts( array(
            'price'     => '',
            'price_info'    => '',
            'type'  => '',
            'delay'     => '',
            'class'     => '',
        ), $atts ) ); 

        $html[] = '<div class="' . ( $class ) . '">';
        $html[] =   '<div class="plan has-animation" data-delay="' . ( (int)$delay ) . '">';
        $html[] =       '<div class="plan-container">';
        $html[] =           '<ins class="plan-price">' .( $price ) . '</ins>';
        $html[] =           '<span class="price-info">' . ( $price_info ) . '</span>';
        $html[] =           '<h2 class="second_color">' . ( $type ) . '</h2>';

        $html[] =           do_shortcode( $content );

        $html[] =       '</div>';
        $html[] =   '</div>';
        $html[] = '</div>';

        return implode("\n", $html); 
    }

当我调用简码时 [pt_plan price=".99" price_info="per month" type="Standard" delay="400" class="col-lg-4 col-md-4 col-sm-4"] 我想让价格属性允许简码作为值来利用高级自定义字段。

但是,如果我将 [acf field='session_price_1'] 作为属性值,就像这样,[pt_plan price="[acf field='session_price_1']" price_info="per month" type="Standard" delay="400" class="col-lg-4 col-md-4 col-sm-4"] 它就像一个字符串一样出现并破坏了原始的 pt_plan 简码。

有人能指出我正确的方向吗?我以为可以将 do_shortcode() 添加到计划短代码中的 $price 变量,但它没有用。

希望所有这些都有意义并提前致谢!!

我真的让它工作了。 因为简码在 WP 中的工作方式,嵌套简码的结尾 ] 关闭了原始简码,搞砸了一切。 为了解决这个问题,我做了以下事情:

$html[] = '<div class="plan-price">'.do_shortcode('['.$price.']').'</div>';

[pt_plan price="acf field='session_price_1'" price_info="per month" type="Standard" delay="400" class="col-lg-4 col-md-4 col-sm-4"]

效果很好!

基本上,我只是在属性中输入简码和 ' 而不是 " 的文本,在将属性值打印到 中时将 [ 和 ] 连接起来,并使用 do_shortcode() 到 运行简码。