我正在尝试找到一种方法,将产品ID从当前产品SKU中取出,并通过短代码显示。到目前为止,我来了,但由于某种原因,我使用的代码没有得到正确的ID,我无法弄清楚为什么因为我在PHP中不是很好。
解:
function get_product_id_by_sku_fc( $atts ){
global $product;
$atts = shortcode_atts( array(
'sku' => '',
), $atts );
$product_id = null;
// get product ID out of the defined SKU in the shortcode [get_product_id_by_sku sku="SKU"]
if (!empty( $atts['sku'] ) ) {
$product_id = wc_get_product_id_by_sku( $atts['sku'] );
$product = wc_get_product( $product_id );
} else {
//get product ID out of the current_product sku, shortcode [get_product_id_by_sku]
$sku = $product->get_sku();
$product_id = wc_get_product_id_by_sku( $sku );
$product = wc_get_product( $product_id );
}
return $product_id;
}
add_shortcode( 'get_product_id_by_sku', 'get_product_id_by_sku_fc');
谢谢大家的帮助!
PS:如果你与功能有冲突,那么只需自定义功能名称和短代码名称。
答案 0 :(得分:1)
您需要在使用之前定义$ sku。假设您的短代码如下所示:
[getpid sku="product-1"]
你应该这样做:
function getproductbysku( $atts ){
$product_id = null; //or whatever you want to default to.
if(!empty($atts['sku'])){
$product_id = wc_get_product_id_by_sku( $atts['sku'] );
}
return $product_id;
}
add_shortcode( 'getpid', 'getproductbysku');