php - 在 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 订阅下载可能是问题所在,但它对我来说是必须的插件。我可能只是没有做正确的事情或错过了什么,但我似乎无法找出什么。
有人可以帮我解决这个问题吗?那将是真棒。
我想要的只是可下载产品旁边的产品图片。我只销售可下载的产品,有数百种产品。图像只会帮助客户更轻松地找到他们想要下载的内容。
解决方案
@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;
推荐阅读
- spring-boot - 没有创建表,RestController Url 也没有工作
- php - 数组只替换特定键的值
- firefox - 如何使用 Firefox 扩展在 js 文件中使用 iimPlay()(免费)
- php - Mariadb Docker 容器拒绝使用数据库模式进行初始化
- flutter - 在 Flutter 中,避免 setState() 有什么用吗?
- python - 有没有办法返回布尔值以查找节点及其组件是否已连接?
- node.js - React js:在单页应用程序中呈现多个索引 html
- python - 如何将一个单元格中的值更改为另一个单元格中的值(熊猫)
- python - Conan install --build 没有按预期工作
- firebase - this.props 在类中未定义