将简码和 div 添加到 PHP 输出到新的简码
Add shortcode and div into PHP output to new shortcode
这是当前的 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 以及 div class. 中的简码或 sku
继续并启用 WordPress Shortcode documentation a glance. The shortcode you have now is improper. WordPress Shortcodes are supposed to return
a value, not echo
or otherwise output it. If you see echo
statements in a shortcode function, generally they have Output Buffering,然后 return 最终值。 (你也有语法错误)
以下是实现当前功能的正确方法:
add_shortcode('product_sku', 'wc_get_product_sku');
function wc_get_product_sku() {
global $product;
return $product->get_sku();
}
如果要输出 HTML,只需将其包含在 return 值中即可。如果你想要另一个功能:
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,如下所示:
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>';
}
}
这是当前的 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 以及 div class. 中的简码或 sku
继续并启用 WordPress Shortcode documentation a glance. The shortcode you have now is improper. WordPress Shortcodes are supposed to return
a value, not echo
or otherwise output it. If you see echo
statements in a shortcode function, generally they have Output Buffering,然后 return 最终值。 (你也有语法错误)
以下是实现当前功能的正确方法:
add_shortcode('product_sku', 'wc_get_product_sku');
function wc_get_product_sku() {
global $product;
return $product->get_sku();
}
如果要输出 HTML,只需将其包含在 return 值中即可。如果你想要另一个功能:
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,如下所示:
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>';
}
}