首页 > 解决方案 > 在 Woocommerce 我的帐户下载部分显示产品图片

问题描述

我有一个问题,我似乎无法弄清楚。我正在尝试将产品图片添加到 my-account/downloads/ 部分中的每个项目。我尝试了多个找到的代码,但似乎没有一个对我有用。

我正在使用 3 个插件,所有其他插件都被禁用,试图解决这个问题。这 3 个插件是必需的,所以我需要它来激活所有这 3 个插件。

这3个插件是:

Woocommerce 会员资格

Woocommerce 订阅

Woocommerce 订阅下载

我所有的产品都是虚拟的,所以我需要在下载部分的名称旁边放一张图片。我在这里拉头发...无论如何,对于我尝试过的事情。

我已经尝试过在此表单帖子中找到的代码

function my_account_downloads_column_download_product( $download ) {
    // Get $product object from product ID
    $product = wc_get_product( $download['product_id'] );
    
    // Get thumbnail
    $thumbnail = $product->get_image(array( 36, 36)); // Get the product thumbnail (from product object)
    
    // Image found
    if( $product->get_image_id() > 0 ) {
        $item_name = '<div class="item-thumbnail">' . $thumbnail . '</div>';
        echo $item_name;
    }

    echo '<a href="' . $product->get_permalink() . '">' . $product->get_name() . '</a>';
 }

我还尝试了该表单中存在的其他代码,但它们对我不起作用。

基于将产品图片添加到 Woocommerce 我的帐户订单查看答案代码,这对查看订单页面非常有用,我进行了一些更改以使其适用于我的帐户/下载/部分。

这是我的代码尝试:

// Display the product thumbnail in order view pages
add_filter( 'woocommerce_my_account_my_downloads_title', 'display_product_image_in_downloads', 20, 3 
    );
function display_product_image_in_downloads( $item_name, $item, $is_visible ) {
    // Targeting view order pages only
    if( is_wc_endpoint_url( 'downloads' ) ) {
        $product       = $item->get_product(); // Get the WC_Product object (from order item)
        $product_image = $product->get_image(array( 80, 80)); // Get the product thumbnail (from product 
    object)
        $item_name     = '<div class="item-thumbnail">' . $product_image . '</div>' . $item_name;
    }
    return $item_name;
}

我在Woocommerce Hook Reference 页面上更改woocommerce_my_account_my_downloads_title 了所有我能找到的与下载相关的内容

但是,它们似乎都不适合我。

我尝试通过将模板文件复制到我的 childtheme/woocommerce/order/order-downloads.php、childtheme/woocommerce/myaccount/downloads.php 和 childtheme/woocommerce/myaccount/my-downloads.php 来修改模板文件。我无法让它工作,所以我从我的 childtheme 中删除了它,并在我的 childthemes functions.php 文件中尝试了上面的代码。

我已经在互联网上搜索试图找到解决方案,但是,它们中的每一个似乎都不适合我。我觉得Woocommerce 订阅下载可能是问题所在,但它对我来说是必须的插件。我可能只是没有做正确的事情或错过了什么,但我似乎无法找出什么。

有人可以帮我解决这个问题吗?那将是真棒。

我想要的只是可下载产品旁边的产品图片。我只销售可下载的产品,有数百种产品。图像只会帮助客户更轻松地找到他们想要下载的内容。

标签: phpwordpresswoocommercehook-woocommercewoocommerce-subscriptions

解决方案


@LoicTheAztec 的答案有效,但我对其进行了一些更改,因为:订购数字产品时,
order-downloads.php也会在端点上调用内容。order-received所以使用时if ( ! is_wc_endpoint_url( 'downloads' ) ) return;- 它会在/my-account/downloads页面上显示图像,但产品标题字段/checkout/order-received将变为空。没有产品标题,也没有图像。

所以,我通过改变
if ( ! is_wc_endpoint_url( 'downloads' ) ) return;
来解决它:
if ( is_wc_endpoint_url( array ('downloads' , 'order-received') )) return;


推荐阅读