添加短代码并划分为新短代码的PHP输出

这是当前的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类中的短代码或sku。


DIEA
浏览 103回答 1
1回答

茅侃侃

来吧,给一个字压输入短代码文档一瞥。您现在拥有的短代码不正确。WordPress短代码应该是一个值,而不是或以其他方式输出它。如果在 shortcode 函数中看到语句,则通常这些语句启用了“输出缓冲”,然后返回最终值。(您也有语法错误)returnechoecho以下是实现当前函数的正确方法:add_shortcode('product_sku', 'wc_get_product_sku');&nbsp;function wc_get_product_sku() {&nbsp;&nbsp; &nbsp; global $product;&nbsp; &nbsp; return $product->get_sku();}如果要输出 HTML,只需将其包含在返回值中即可。如果你想要另一个函数:add_shortcode( 'product_sku_div', 'wc_product_sku_div');&nbsp;function wc_product_sku_div() {&nbsp;&nbsp; &nbsp; global $product;&nbsp; &nbsp; 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');&nbsp;function wc_get_product_sku_function( $atts ) {&nbsp;&nbsp; &nbsp; global $product;&nbsp; &nbsp; $sku = $product->get_sku();&nbsp; &nbsp; extract( shortcode_atts( array(&nbsp; &nbsp; &nbsp; &nbsp; 'wrap' => false,&nbsp; &nbsp; ), $atts, 'wc_get_product_sku' ) );&nbsp; &nbsp; 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');&nbsp;function wc_product_sku_div() {&nbsp;&nbsp; &nbsp; global $product;&nbsp; &nbsp; if( $product && !empty( $product->get_sku() ) ){&nbsp; &nbsp; &nbsp; &nbsp; return sprintf( '<div class="widget" sp-sku="%s"></div>', $product->get_sku() );&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; return '<div>NO SKU FOUND</div>';&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP