使用 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()
到 运行简码。
我正在尝试使用高级自定义字段插件简码作为另一个简码中的属性。
制作我的主题的公司目前不提供定制支持。
原来的短代码是这样列出的
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()
到 运行简码。