【问题标题】:Remove WooCommerce custom related product tab if there are no related products如果没有相关产品,请删除 WooCommerce 自定义相关产品选项卡
【发布时间】:2017-09-14 16:28:21
【问题描述】:

在 WooCommerce 中,我使用“WPB WooCommerce 相关产品滑块”和“WooCommerce 的自定义相关产品”第三方插件。

通过下面的代码,我添加了一个自定义选项卡来显示相关产品:

remove_action( 'woocommerce_after_single_product_summary', 'wpb_wrps_related_products',22 );
add_filter( 'woocommerce_product_tabs', 'wpb_wrps_adding_related_products_slider_to_product_tab' );
if( !function_exists('wpb_wrps_adding_related_products_slider_to_product_tab') ){
    function wpb_wrps_adding_related_products_slider_to_product_tab( $tabs ) {
        $tabs['wpb_wrps_related_products_slider'] = array(
            'title'       => __( 'Related Products','wpb-wrps' ),
            'priority'    => 30,
            'callback'    => 'wpb_wrps_related_products'
        );
        return $tabs;
    }
}

由于我的一些产品没有相关产品,我怎样才能让这个标签在有相关产品时才显示?

【问题讨论】:

    标签: php wordpress woocommerce product related-content


    【解决方案1】:

    这是获取当前产品的相关产品数量的方法。有了这些信息,我们可以根据该计数有条件地显示或不显示您的自定义标签:

    if( !function_exists('wpb_wrps_adding_related_products_slider_to_product_tab') ){
        add_filter( 'woocommerce_product_tabs', 'wpb_wrps_adding_related_products_slider_to_product_tab' );
        function wpb_wrps_adding_related_products_slider_to_product_tab( $tabs ) {
            global $product;
            // Get the related products count
            $related_count = count( maybe_unserialize( get_option( '_transient_wc_related_'.$product->get_id() ) ) );
            // If no related products we exit
            if( empty( $related_count ) || $related_count == 0 ) return $tabs;
    
            $tabs['wpb_wrps_related_products_slider'] = array(
                'title'       => __( 'Related Products','wpb-wrps' ),
                'priority'    => 30,
                'callback'    => 'wpb_wrps_related_products'
            );
            return $tabs;
        }
        // Just for testing
        function wpb_wrps_related_products() {
            echo '<h3>HERE your custom related products loop (fake)</h3>';
        }
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    此代码已在 Woocommerce 3+ 上测试并且有效

    【讨论】:

    • 你好 LoicTheAztec。我有一个错误:致命错误:无法重新声明 wpb_wrps_related_products()(之前在 /../../public_html/wp-content/plugins/wpb-woocommerce-related-products-slider/inc/wpb-wrps-functions 中声明) php:20) 在 /../../public_html/wp-content/themes/clean-commerce/functions.php 第 49 行
    • 我删除了函数 wpb_wrps_related_products() 现在我没有出现致命错误但相关产品的输出不好
    • @arz 这段代码已经过测试并且完美运行......现在你需要的是在我的函数中获取对你有用的东西:重要的缺失是使用相关产品计数代码它在一个条件函数中,在你的代码中......所以你应该接受这个答案。这是我可以用提供的代码做的唯一事情……您应该添加完整的代码,因为缺少wpb_wrps_related_products()……
    • 你好。我在代码中添加了 remove_action( 'woocommerce_after_single_product_summary', 'wpb_wrps_related_products',22 )。现在输出的外观很好,但我看到该产品的相关产品没有任何相关产品。
    • @arz 因为这是特定于您的附加插件设置的,是的这是适合您的方式(添加回 remove_action)。我在这里提供的代码仅用于在普通的 woocommerce 网站上进行测试。相关产品保存在wp_options 表(对于每个产品)的临时缓存中,我从中获取数据。也许您应该尝试在 woocommerce 状态 > 工具 > 清除瞬态和过期瞬态中清除/刷新它们……无论如何,在普通网站上,我的代码可以正常工作,并且在没有相关产品时不会显示自定义选项卡。
    猜你喜欢
    • 2018-02-26
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2013-08-11
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多