Reputation:
Is there any way to check the product has variation something like Please help me.
<?php
If (product has variation) {
echo"This Product have Variations ";
} else {
echo "This Product does not have Variations ";
}
?>
Upvotes: 14
Views: 30753
Reputation: 1182
if ($product->is_type('simple')) {
// Simple product
} elseif ($product->is_type('grouped')) {
// Grouped product
} elseif ($product->is_type( 'external')) {
// External/Affiliate product
} elseif ($product->is_type('variable')) {
// Variable product
}
To get all variation ids of a variable product
$product = wc_get_product($product_id);
$variations = $product->get_available_variations();
$variations_id = wp_list_pluck( $variations, 'variation_id' );
The above code will provide visible variation ids only. For example, If the price is not set for a variation, that variation will be hidden.
Alternatively use the below code to get all variations without considering visibility.
$product = wc_get_product($product_id);
$current_products = $product->get_children();
Upvotes: 1
Reputation: 2907
This should work:
if( $product->is_type( 'simple' ) ){
// No variations to product
} elseif( $product->is_type( 'variable' ) ){
// Product has variations
}
Example: If you will replace the file woocommerce --> single-product --> meta.php with this code, you will see it works.
<?php
/**
* Single Product Meta
*
* @author WooThemes
* @package WooCommerce/Templates
* @version 1.6.4
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
global $post, $product;
$cat_count = sizeof( get_the_terms( $post->ID, 'product_cat' ) );
$tag_count = sizeof( get_the_terms( $post->ID, 'product_tag' ) );
?>
<div class="product_meta">
<?php do_action( 'woocommerce_product_meta_start' ); ?>
<?php if ( wc_product_sku_enabled() && ( $product->get_sku() || $product->is_type( 'variable' ) ) ) : ?>
<span class="sku_wrapper"><?php _e( 'SKU:', 'woocommerce' ); ?> <span class="sku" itemprop="sku"><?php echo ( $sku = $product->get_sku() ) ? $sku : __( 'N/A', 'woocommerce' ); ?></span>.</span>
<?php endif; ?>
<?php echo $product->get_categories( ', ', '<span class="posted_in">' . _n( 'Category:', 'Categories:', $cat_count, 'woocommerce' ) . ' ', '.</span>' ); ?>
<?php echo $product->get_tags( ', ', '<span class="tagged_as">' . _n( 'Tag:', 'Tags:', $tag_count, 'woocommerce' ) . ' ', '.</span>' ); ?>
<?php do_action( 'woocommerce_product_meta_end' ); ?>
<?php if( $product->is_type( 'simple' ) ){
// No variations to product
echo "XX";
} elseif( $product->is_type( 'variable' ) ){
// Product has variations
echo "VV";
} ?>
</div>
Upvotes: 23