2017-07-19 58 views

回答

1

是可以使用PHP函数method_exists()任何WooCommerce对象像WC_ProductWC_Order对象上...

这里是WC_Product对象$product一个例子:

// WooCommerce retro-compatibility (compact) 
$product_id = method_exists($product, 'get_id') ? $product->get_id() : $order->id; 

或者您也可以使用version_compare()PHP函数:

// WooCommerce retro-compatibility (2) 
if (version_compare(WC_VERSION, '3.0', '<')) { 
    // Older than 3.0 
    $product_id = $product->id; 
} else { 
    // 3.0 and above 
    $product_id = $product->get_id(); 
} 

,并以紧凑的方式是相同的:

$product_id = version_compare(WC_VERSION, '3.0', '<') ? $product->id : $product->get_id(); 

(在$product是现有的和定义WC_Product对象...)

+0

所以这将工作? '$ product_id = method_exists($ order,'get_id');'而不是这个? '$ product_id = $ product-> get_id();'产品已经定义好了? –

+0

@ciaranpflanagan我已经用'$ product'而不是'$ order'更新了我的答案...并且是'$ product'是已定义和现有的WC_Product对象*(就像在WooCommerce的旧版本中一样)* ...此答案允许为您的代码提供版本兼容性。因此,您的代码将与WC 2.6.x和WC 3+一起工作 – LoicTheAztec

+0

只需清除上面的注释,就可以定义产品变量。不知道为什么我添加了? –