如何在 WooCommerce 单个产品页面上有条件地使用简码

How to conditionally use a shortcode on WooCommerce single product pages

如果库存为空,如何在 WooCommerce 单个产品页面上有条件地隐藏简码?

例如,如果产品缺货:

您可以使用任何这些单一产品页面挂钩并添加您需要的条件。

https://www.businessbloomer.com/woocommerce-visual-hook-guide-single-product-page/

就像您可以使用 woocommerce_before_single_product 并检查产品可用性,然后根据该结果您可以使用 add_shortcoderemove_shortcode。如果需要,您还可以使用 wp_footer 脚本添加脚本。

您可以进一步分享 details/scenario 以获得确切的解决方案。

你的问题很宽泛。但是如果产品(或变体)缺货,您可以将 CSS 正文 class 添加到产品页面。然后您可以使用它来操作您的页面,例如通过 CSS 或 JavaScript.

以下代码片段将为简单的缺货产品添加 out-of-stock 作为正文 class,并为缺货的每个变体添加 {variation-id}-out-of-stock 正文 class缺货:

add_filter( 'body_class', 'add_class_if_product_is_out_of_stock', 10, 1 );
function add_class_if_product_is_out_of_stock( $classes ) {

    if ( is_product() ) {

        global $post;

        if ( $product = wc_get_product( $post->ID ) ) {
            if ( $product->is_type( 'variable' ) ) {
                $children = $product->get_children();
                foreach ( $children as $child_id ) {

                    if ( $product = wc_get_product( $child_id ) ) {
                        if ( $product->is_in_stock() == false ) {
                            $classes[] = sprintf( '%s-out-of-stock', $child_id );
                        }
                    }
                }
            } elseif ( $product->is_in_stock() == false ) {
                $classes[] = 'out-of-stock';
            }
        }

    }
    return $classes;
}

应将此代码段添加到您的子主题的 functions.php 中,或通过 Code Snippets 等插件添加。