代码之家  ›  专栏  ›  技术社区  ›  Jane Lo

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

  •  1
  • Jane Lo  · 技术社区  · 7 年前

    我这里有一个很奇怪的问题。我想使用第一个产品附件库图像作为购物车页面中的产品缩略图。

    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\u Product\u简单对象具有正确的库图像ID,如下所示: [gallery_image_ids] => Array ( [0] => 1174 [1] => 1175 [2] => 1176 ) [gallery_image_ids] => Array ( )

    我认为这是由Woocommerce升级引起的。因为我的localhost有完全不同的$_产品的对象结构。

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

    1 回复  |  直到 7 年前
        1
  •  5
  •   LoicTheAztec    6 年前
    1. 方法 get_gallery_attachment_ids() get_gallery_image_ids() 方法3。

    因此,您可以通过以下方式进行管理:

    $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);