Suraj Sanwal
Suraj Sanwal

Reputation: 790

How to check if a WooCommerce product is from a custom product type?

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.

Upvotes: 2

Views: 3917

Answers (2)

LoicTheAztec
LoicTheAztec

Reputation: 253804

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_exists( $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().

Upvotes: 2

Suraj Sanwal
Suraj Sanwal

Reputation: 790

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 );

    }

Upvotes: 4

Related Questions