这是当前的HTML,但是我想创建一个短代码来显示所有内容...
<div class="widget" sp-sku="sku-value-goes-here"></div>
我设置了获得SKU的简码
function wc_get_product_sku() {
global $product;
echo $product->get_sku();
add_shortcode('product_sku', 'wc_get_product_sku');
但是我想要一个新的简码,以div类中的简码或sku输出整个div。
now短码不正确。 WordPress简码应该return
一个值,而不是echo
或以其他方式输出它。如果在短码函数中看到echo
语句,通常它们已启用Output Buffering,然后返回最终值。 (您也有语法错误)
add_shortcode('product_sku', 'wc_get_product_sku');
function wc_get_product_sku() {
global $product;
return $product->get_sku();
}
如果要输出HTML,只需将其包括在返回值中。如果您想要其他功能:
add_shortcode( 'product_sku_div', 'wc_product_sku_div'); function wc_product_sku_div() { global $product; return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() ); }
或者,您可以将它们添加到相同的函数中,并使用确定是输出整个HTML还是仅输出SKU,如下所示:shortcode属性
add_shortcode( 'wc_get_product_sku', 'wc_get_product_sku_function');
function wc_get_product_sku_function( $atts ) {
global $product;
$sku = $product->get_sku();
extract( shortcode_atts( array(
'wrap' => false,
), $atts, 'wc_get_product_sku' ) );
return ($wrap == true) ? sprintf( '<div class="widget" sp-sku="%s"></div>', $sku ) : $sku;
}
这就像您使用[wc_get_product_sku]
或[wc_get_product_sku wrap="false"]
仅获得sku,并使用[wc_get_product_sku wrap="true"]
获得整个HTML。编辑:要检查SKU,只需将return语句包装在if / else中:
add_shortcode( 'product_sku_div', 'wc_product_sku_div'); function wc_product_sku_div() { global $product; if( $product && !empty( $product->get_sku() ) ){ return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() ); } else { return '<div>NO SKU FOUND</div>'; } }