2017-08-24 40 views
1

我在這裏有一個很奇怪的問題。我想在購物車頁面中使用第一個產品附件圖庫圖像作爲產品縮略圖。 在cart.php所以我用下面的代碼獲取圖庫附件ID:在購物車對象中獲取WooCommerce變量產品附件圖庫ID

foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
      $_product = apply_filters('woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key); 
      $attachment_ids = $_product->get_gallery_attachment_ids(); 

奇怪的是,它完美地工作在我的本地(我的測試網站,woocommerce版本2.6.8)。但它無法在我的在線網站上獲得可變產品的任何數據(該woocommerce版本是3.1.2)。但是,它可以獲得簡單產品的正確數據。

我用print_r($_product)看到它的數據,找出 WC_Product_Simple對象已正確庫圖像的ID,如下圖所示:[gallery_image_ids] => Array ([0] => 1174 [1] => 1175 [2] => 1176) 但WC_Product_Variation對象有數組中沒有價值:我認爲這是[gallery_image_ids] => Array ()

Woocommerce升級造成的。因爲我的localhost有完全不同的$ _product對象結構。

有沒有人知道另一種方式獲取車載圖像頁中的可變產品的圖像圖像ID?

回答

1
  1. 方法get_gallery_attachment_ids()已被棄用,在WooCommerce 3.已取代get_gallery_image_ids()方法
  2. WC_Product_variations沒有一個自己的畫廊,它是有它的父WC_Product_Variable。

所以,你可以管理它這樣說:

$product = apply_filters('woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key); 
$attachment_ids = $product->get_gallery_image_ids(); 
// For Product variations 
if($product->is_type('variation') && empty($attachment_ids)) { 
    // Get the parent variable product 
    $parent_product = wc_get_product($product->get_parent_id()); 
    $attachment_ids = $parent_product->get_gallery_image_ids(); 
    $image_id = $product->get_image_id(); // The variation main Image ID 
} 
// Testing output 
print_r($attachment_ids); 
相關問題