skip to Main Content

I need to create a conditional to hide a specific part of my product page template if the product is a Gift Card type.

I tried something like this but it returning FALSE

$temp_product = wc_get_product( $product->get_id() );
var_dump( is_a( $temp_product, 'WC_Product_PW_Gift_Card' ) );

How it is possible to do get the type of product (Gift card or not)?

EDIT: I am using woocommerce gift Card plugin.

2

Answers


  1. Chosen as BEST ANSWER

    I got the solution for my problem so I am posting it here, hope this will help others.

    public static function is_gift_card( $product ) {
    
        if ( ! is_a( $product, 'WC_Product' ) ) {
                return false;
            }
        
            if ( $product->is_type( 'variation' ) ) {
                $product = wc_get_product( $product->get_parent_id() );
            }
        
            return $product->meta_exists( '_gift_card' ) && 'yes' === $product->get_meta( '_gift_card', true );
    
        }
    

  2. You can try to check the product type with the WC_Product get_type() method.

    Try to use (where "product_type" need to be replaced with your Gift card product type slug):

    global $product; // If needed (optional)
    
    if ( ! is_a( $product, 'WC_Product' ) ) {
        $product = wc_get_product( get_the_ID() );
    }
    
    if ( method_exist( $product, 'get_type' ) && $product_get_type() === 'product_type' ) {
        var_dump($product); // Gift card product
    }
    

    It could work.

    Now to get the product object from cart items you will use $cart_item['data'] , and on orders items you will use $item->get_product().

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search