Woocommerce 如果产品有加售在产品列表中显示徽章
Posted
技术标签:
【中文标题】Woocommerce 如果产品有加售在产品列表中显示徽章【英文标题】:Woocommerce if product has upsells show badge in product listing 【发布时间】:2022-01-02 07:29:37 【问题描述】:我正在尝试在 Woocommerce 网站的产品列表中显示动态产品徽章。产品徽章应仅在产品分配有追加销售时显示。
我只是在单个产品页面上使用content-single-product.php
文件中的代码进行了此操作,结果很好:
<?php if ( isset( $product ) && is_product() )
$upsells = version_compare( WC_VERSION, '3.0', '<' ) ? $product->get_upsells() : $product->get_upsell_ids();
if ( count( $upsells ) > 0 ) ?>
<span class="more_variants">Finns i fler varianter</span>
<?php ?>
但是,由于没有为列表中的单个产品收集加售的产品数据,我尝试了另一种方法,将此代码实现到 functions.php
:
add_action( 'woocommerce_before_shop_loop_item', 'related_upsell_products', 15 );
function related_upsell_products()
global $product;
if ( isset( $product ) && is_product() )
$upsells = version_compare( WC_VERSION, '3.0', '<' ) ? $product->get_upsells() : $product->get_upsell_ids();
if ( count( $upsells ) > 0 )
echo '<span class="more_variants">Finns i fler varianter</span>';
functions.php
中的代码没有给我错误,也没有给我我想要的结果。它什么也不返回。我诚实的想法是,global $product;
会给我额外的产品数据,以便我获取信息,如果该产品有分配给它的追加销售产品。
非常欢迎任何想法!我搜索了论坛,并没有得到太多关于以这种方式与 Woocommerce 进行加售的结果。可能是因为将追加销售作为变体而不是可变产品使用并不常见。..
【问题讨论】:
【参考方案1】:当您说“列表中的产品”时,我会假设您在 shop
页面上。。如果是这样,那么您需要:
is_shop()
。
在您查看商店页面后,也请致电您的global $product
。
所以你的整个代码应该是这样的:
add_action('woocommerce_before_shop_loop_item', 'related_upsell_products', 15);
function related_upsell_products()
if (is_shop())
global $product;
$upsells = version_compare(WC_VERSION, '3.0', '<') ? $product->get_upsells() : $product->get_upsell_ids();
if (count($upsells) > 0)
echo '<span class="more_variants">Finns i fler varianter</span>';
结果如下:
【讨论】:
我猜有时答案就在你面前。非常感谢您的帮助!真的很感激。 哈哈!这是绝对正确的。不客气!以上是关于Woocommerce 如果产品有加售在产品列表中显示徽章的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 插件 - WooCommerce - 隐藏产品如果
如果 WooCommerce 结帐中存在某些产品类别,请删除其他产品