为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
DIEA 2022-09-17 22:36:44
这是当前的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。
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

来吧,给一个字压输入短代码文档一瞥。您现在拥有的短代码不正确。WordPress短代码应该是一个值,而不是或以其他方式输出它。如果在 shortcode 函数中看到语句,则通常这些语句启用了“输出缓冲”,然后返回最终值。(您也有语法错误)returnechoecho

以下是实现当前函数的正确方法:

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>';

    }

}


查看完整回答
反对 回复 2022-09-17
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信