如果声明分组产品参考woocommerce

时间:2016-02-08 23:00:27

标签: php filter woocommerce hook

在我的functions.php文件中,我有一些为woocommerce运行的remove_actions和add_filters,但问题是这些函数是针对所有woocommerce产品类型运行的。

我想在钩子/过滤器周围包含一个简单的if语句我只能为分组产品页面运行问题是我不知道woocommerce是如何引用这些页面的,这是我现在所拥有的。

 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

继承人我想做什么,但我不知道$ grouped_product的正确参考。

 if ($grouped_product) {
 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
 }

我有两个add_filter和一个删除操作我想在我的functions.php中附加只在分组产品页面上执行我只需要在上面第二个代码块的第一组括号中使用正确的引用。

尝试了这段代码,但它不起作用..

if (is_product() and $product->is_type('grouped')) {
 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}

函数php文件

 <?php
function theme_enqueue_styles() {

$parent_style = 'parent-style';

wp_enqueue_style( $parent_style, get_template_directory_uri() .       '/style.css' );
wp_enqueue_style( 'child-style',
    get_stylesheet_directory_uri() . '/style.css',
    array( $parent_style )
);
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

//Remove cart options from under short description.

    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );

//Filter below adds new tab and returns cart options within tab.

add_filter( 'woocommerce_product_tabs', 'woo_paym_product_tab' );

function woo_paym_product_tab( $tabs ) {

    // Adds the new tab

        $tabs['paym-plans'] = array( 'title' => __( 'Contract Deals', 'woocommerce' ), 'priority' => 10, 'callback' => 'woo_paym_product_tab_content' );

    return $tabs;

}

function woo_paym_product_tab_content() {

    // The new tab content

        woocommerce_template_single_add_to_cart();

} 

//Filter below changes tab priority to display price plans first.

add_filter( 'woocommerce_product_tabs', 'sb_woo_move_description_tab', 98);

function sb_woo_move_description_tab($tabs) {



    $tabs['paym-plans']['priority'] = 10;

    $tabs['description']['priority'] = 20;

    $tabs['additional_information']['priority'] = 30;

    return $tabs;

}
?>

2 个答案:

答案 0 :(得分:0)

检查$ product-&gt; is_type('groups')在这里没有帮助......

请检查代码是否为您提供任何帮助..

global $post; 
if( $post->post_parent != 0 ){ 
    echo 'is part of a group'; 
}

答案 1 :(得分:0)

解决问题的方法是将其改为过滤器。

add_filter( 'woocommerce_single_product_summary', 'filter_grouped_cart');  

function filter_grouped_cart(){
   global $post;
   if( function_exists('get_product') ){
   $product = get_product( $post->ID );
   if( $product->is_type( 'grouped' ) ){
      remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
}
}
}