获取购物车对象中的 WooCommerce 可变产品附件库 ID

1 php wordpress gallery cart woocommerce

我这里有一个非常奇怪的问题。我想使用第一个产品附件图库图像作为购物车页面中的产品缩略图。\n因此我在 cart.php 中使用以下代码来获取图库附件 ID:

\n\n
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {\n            $_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );\n            $attachment_ids = $_product->get_gallery_attachment_ids();\n
Run Code Online (Sandbox Code Playgroud)\n\n

奇怪的是,它在我的本地主机(我的测试网站,woocommerce 版本是 2.6.8)上完美运行。但它无法\xe2\x80\x99获取我的在线网站上可变产品的任何数据(woocommerce版本是3.1.2)。然而,它可以得到简单产品的正确数据。

\n\n

我用来print_r($_product)查看其中的数据,并发现 \nWC_Product_Simple 对象具有正确的图库图像 ID,如下所示: [gallery_image_ids] => Array ( [0] => 1174 [1] => 1175 [2] => 1176 )\n但是 WC_Product_Variation 对象在数组中没有值: [gallery_image_ids] => Array ( )

\n\n

我认为这是由 Woocommerce 升级引起的。因为我的本地主机具有完全不同的 $_product 对象结构。

\n\n

有谁知道另一种方法来获取购物车页面中可变产品的图库图像 ID?

\n

Loi*_*tec 5

  1. 该方法get_gallery_attachment_ids()已被弃用,并已被get_gallery_image_ids()WooCommerce 3 中的方法取代。
  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);
Run Code Online (Sandbox Code Playgroud)