Reputation: 790
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
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
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