WooCommerce 订阅:检查产品类型是否为简单订阅

Mit*_*ave 1 php wordpress product woocommerce woocommerce-subscriptions

对于 WooCommerce,我使用WooCommerce 订阅插件。我主要有变量订阅产品和一些简单的订阅产品。

我正在使用woocommerce_dropdown_variation_attribute_options_args过滤器挂钩来更新变量订阅产品上的下拉属性值。

对于简单订阅产品,我想添加一些条件以允许或拒绝访问产品页面。

所以我的问题是:我可以使用哪个钩子来检查产品是否是简单订阅,以允许或拒绝访问该产品?

任何帮助/建议将不胜感激。

Loi*_*tec 5

您可以检查WC_Product对象上的产品类型以进行简单订阅,例如:

if( $product->get_type() === 'subscription' ) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

或者

if( $product->is_type('subscription') ) {
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

下面是一个示例用法,它将避免访问简单的订阅产品页面,将客户重定向到主商店页面并显示错误通知:

add_action('template_redirect', 'conditional_single_product_page_access');
function conditional_single_product_page_access(){
    // Targeting single product pages
    if ( is_product() ) {
        $product = wc_get_product( get_the_ID() ); // Get the WC_Product Object

        // Targeting simple subscription products
        if( $product->get_type() === 'subscription' ) {
            wc_add_notice( __("You are not allowed to access this product"), 'error' ); // Notice
            wp_safe_redirect( get_permalink( wc_get_page_id( 'shop' ) ) ); // Redirection
            exit();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的functions.php 文件中。经过测试并有效。


笔记:

  • 要定位变量订阅产品类型,请使用 slug variable-subscription

  • 要以变体订阅为目标,产品类型段为:subscription_variation