【问题标题】:Get WooCommerce variable product attachment gallery id in cart object在购物车对象中获取 WooCommerce 可变产品附件库 ID
【发布时间】:2018-02-02 09:36:23
【问题描述】:

我有一个非常奇怪的问题。我想使用第一个产品附件库图像作为购物车页面中的产品缩略图。 所以我在 cart.php 中使用以下代码来获取图库附件 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 升级引起的。因为我的本地主机具有完全不同的 $_product 对象结构。

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

【问题讨论】:

    标签: php wordpress woocommerce gallery cart


    【解决方案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);
    

    【讨论】:

    • 难以置信,非常感谢!
    猜你喜欢
    • 2017-04-27
    • 2015-03-31
    • 2022-08-17
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多