1 回答
TA贡献1842条经验 获得超21个赞
来吧,给一个字压输入短代码文档一瞥。您现在拥有的短代码不正确。WordPress短代码应该是一个值,而不是或以其他方式输出它。如果在 shortcode 函数中看到语句,则通常这些语句启用了“输出缓冲”,然后返回最终值。(您也有语法错误)return
echo
echo
以下是实现当前函数的正确方法:
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() );
}
或者,您可以将它们添加到同一函数中,并使用 shortcode 属性来确定是输出整个 HTML 还是仅输出 SKU,如下所示:
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;
}
这希望您仅使用或获取 SKU,并获取整个 HTML。[wc_get_product_sku][wc_get_product_sku wrap="false"][wc_get_product_sku wrap="true"]
编辑:要检查 SKU,只需将返回语句包装在 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>';
}
}
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报