【问题标题】:Woocommerce if product has upsells show badge in product listingWoocommerce 如果产品有加售在产品列表中显示徽章
【发布时间】: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 进行加售的结果。可能是因为将追加销售作为变体而不是可变产品使用并不常见。..

【问题讨论】:

    标签: php wordpress woocommerce product woocommerce-theming


    【解决方案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>';
            }
        }
    }
    

    结果如下:

    【讨论】:

    • 我猜有时答案就在你面前。非常感谢您的帮助!真的很感激。
    • 哈哈!这是绝对正确的。不客气!
    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 2017-08-10
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 2019-08-02
    相关资源
    最近更新 更多