我遇到了一个我似乎无法解决的问题。我正在尝试将产品图片添加到我的帐户/下载/部分中的每个项目。我尝试了多个找到的代码,但似乎没有一个对我有用。
我正在使用 3 个插件,所有其他插件都被禁用,试图解决这个问题。这 3 个插件是必需的,所以我需要它来激活所有 3 个插件。
这 3 个插件是:
Woocommerce 成员(member)资格
Woocommerce 订阅
Woocommerce 订阅下载
我所有的产品都是虚拟的,所以我需要在下载部分的名称旁边放一张图片。我在这里拉扯我的头发......无论如何,我已经尝试过的事情。
我已经尝试过我在 This form post 中找到的这段代码
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>';
}
我还尝试了该表单中的其他代码,但它们对我不起作用。
基于 Add the product image to Woocommerce my account order view 答案代码,它非常适合查看订单页面,我做了一些更改以使其适用于我的帐户/下载/部分。
这是我的代码尝试:
// 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_my_account_my_downloads_title
更改为所有我能找到的与 Woocommerce Hook Reference page 上的下载相关的内容
但是,它们似乎都不适合我。
我尝试通过将模板文件复制到我的 childtheme/woocommerce/order/order-downloads.php、childtheme/woocommerce/myaccount/downloads.php 和 childtheme/woocommerce/myaccount/my-downloads.php 来修改模板文件.我无法使其中任何一个工作,所以我将它从我的 childtheme 中删除,并在我的 childthemes functions.php 文件中尝试了上面的代码。
我在网上搜索过,试图找到解决方案,但似乎每一个都不适合我。我觉得 Woocommerce Subscriptions Downloads 可能是问题所在,但它对我来说是必须的插件。我可能只是没有做对或错过了什么,但我似乎无法找出是什么。
谁能帮我解决这个问题?那太棒了。
我只想要可下载产品旁边的产品图片。我只卖可下载的产品,而且有数百种产品。图片只会帮助客户更轻松地找到他们想要下载的内容。
最佳答案
在“我的帐户下载”部分,相关模板是 myaccount/downloads.php
。
此模板调用 order/order-downloads.php
来显示下载表。
所以要使用的正确钩子(Hook)是woocommerce_account_downloads_column_{$column_id}
复合 Action 钩子(Hook),其中**$column_id
**是download-product
以定位产品名称。
Now for Woocommerce Subscriptions Downloads, I don't know if the following will work.
所以正确的代码应该是:
// Display the product thumbnail in order view pages
add_filter( 'woocommerce_account_downloads_column_download-product', 'display_product_image_on_account_downloads' );
function display_product_image_on_account_downloads( $download ) {
// Targeting view order pages only
if ( ! is_wc_endpoint_url( 'downloads' ) ) return;
if ( $download['product_id'] > 0 ) {
$product = wc_get_product( $download['product_id'] ); // The product object
$image = $product->get_image( array(50, 50) ); // The product image
if ( $download['product_url'] ) {
echo $image . '<a href="' . esc_url( $download['product_url'] ) . '">' . esc_html( $download['product_name'] ) . '</a>';
} else {
echo $image . esc_html( $download['product_name'] );
}
}
}
代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。
关于php - 在 Woocommerce 我的帐户下载部分显示产品图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62946257/