Woocommerce 如果产品有加售,则在产品列表中显示徽章
Woocommerce if product has upsells show badge in product listing
我正在尝试在 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
中的代码既没有给我错误,也没有给我我想要的结果。它returns没什么。我的诚实想法是 global $product;
会为我提供获取信息所需的额外产品数据,如果特定产品是否分配了追加销售产品。
任何想法都非常欢迎!我已经搜索了论坛,并没有得到太多关于以这种方式使用 Woocommerce 处理加售的结果。可能是因为使用加售作为变体而不是可变产品并不是很常见..
当您说 “列表中的产品” 时,我假设您在 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 网站的产品列表中显示动态产品徽章。产品徽章应仅在产品分配有加售时显示。
我刚刚在单个产品页面上使用 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
中的代码既没有给我错误,也没有给我我想要的结果。它returns没什么。我的诚实想法是 global $product;
会为我提供获取信息所需的额外产品数据,如果特定产品是否分配了追加销售产品。
任何想法都非常欢迎!我已经搜索了论坛,并没有得到太多关于以这种方式使用 Woocommerce 处理加售的结果。可能是因为使用加售作为变体而不是可变产品并不是很常见..
当您说 “列表中的产品” 时,我假设您在 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>';
}
}
}
结果如下: