get_variation_attributes() public method

Return an array of attributes used for variations, as well as their possible values.
public get_variation_attributes ( string $context = 'view' ) : array
$context string
return array Attributes and their available values
Beispiel #1
2
 /**
  * Test variable and variations.
  *
  * @since 2.7.0
  */
 function test_variables_and_variations()
 {
     $product = new WC_Product_Variable();
     $product->set_name('Variable Product');
     $attribute = new WC_Product_Attribute();
     $attribute->set_id(0);
     $attribute->set_name('pa_color');
     $attribute->set_options(explode(WC_DELIMITER, 'green | red'));
     $attribute->set_visible(false);
     $attribute->set_variation(true);
     $product->set_attributes(array($attribute));
     $product->save();
     $this->assertEquals('Variable Product', $product->get_name());
     $variation = new WC_Product_Variation();
     $variation->set_name('Variation #1 of Dummy Variable CRUD Product');
     $variation->set_parent_id($product->get_id());
     $variation->set_regular_price(10);
     $variation->set_sku('CRUD DUMMY SKU VARIABLE GREEN');
     $variation->set_manage_stock('no');
     $variation->set_downloadable('no');
     $variation->set_virtual('no');
     $variation->set_stock_status('instock');
     $variation->set_attributes(array('pa_color' => 'green'));
     $variation->save();
     $this->assertEquals('Variation #1 of Dummy Variable CRUD Product', $variation->get_name());
     $this->assertEquals('CRUD DUMMY SKU VARIABLE GREEN', $variation->get_sku());
     $this->assertEquals(10, $variation->get_price());
     $product = new WC_Product_Variable($product->get_id());
     $children = $product->get_children();
     $this->assertEquals($variation->get_id(), $children[0]);
     $expected_attributes = array('pa_color' => array('green'));
     $this->assertEquals($expected_attributes, $product->get_variation_attributes());
     $variation_2 = new WC_Product_Variation();
     $variation_2->set_name('Variation #2 of Dummy Variable CRUD Product');
     $variation_2->set_parent_id($product->get_id());
     $variation_2->set_regular_price(10);
     $variation_2->set_sku('CRUD DUMMY SKU VARIABLE RED');
     $variation_2->set_manage_stock('no');
     $variation_2->set_downloadable('no');
     $variation_2->set_virtual('no');
     $variation_2->set_stock_status('instock');
     $variation_2->set_attributes(array('pa_color' => 'red'));
     $variation_2->save();
     $this->assertEquals('Variation #2 of Dummy Variable CRUD Product', $variation_2->get_name());
     $this->assertEquals('CRUD DUMMY SKU VARIABLE RED', $variation_2->get_sku());
     $this->assertEquals(10, $variation_2->get_price());
     $product = new WC_Product_Variable($product->get_id());
     $children = $product->get_children();
     $this->assertEquals($variation_2->get_id(), $children[1]);
     $this->assertEquals(2, count($children));
     $expected_attributes = array('pa_color' => array('green', 'red'));
     $this->assertEquals($expected_attributes, $product->get_variation_attributes());
     $variation_2->set_name('UPDATED - Variation #2 of Dummy Variable CRUD Product');
     $variation_2->set_regular_price(15);
     $variation_2->set_sale_price(9.99);
     $variation_2->set_date_on_sale_to('32532537600');
     $variation_2->save();
     $product = new WC_Product_Variable($product->get_id());
     $expected_prices['price'][$children[0]] = 10.0;
     $expected_prices['price'][$children[1]] = 9.99;
     $expected_prices['regular_price'][$children[0]] = 10.0;
     $expected_prices['regular_price'][$children[1]] = 15.0;
     $expected_prices['sale_price'][$children[0]] = 10.0;
     $expected_prices['sale_price'][$children[1]] = 9.99;
     $this->assertEquals($expected_prices, $product->get_variation_prices());
     $this->assertEquals('UPDATED - Variation #2 of Dummy Variable CRUD Product', $variation_2->get_name());
     $product->set_name('Renamed Variable Product');
     $product->save();
     $this->assertEquals('Renamed Variable Product', $product->get_name());
     $product->delete();
 }
function wcva_return_displaytype_number($product, $post)
{
    $displaytypenumber = 0;
    $product = get_product($post->ID);
    $_coloredvariables = get_post_meta($product->id, '_coloredvariables', true);
    $displaytype = "none";
    if ($product->product_type == 'variable') {
        $product = new WC_Product_Variable($post->ID);
        $attributes = $product->get_variation_attributes();
    }
    if (!empty($attributes) && sizeof($attributes) > 0) {
        foreach ($attributes as $key => $values) {
            if (isset($_coloredvariables[$key]['display_type'])) {
                $displaytype = $_coloredvariables[$key]['display_type'];
            }
            if ($displaytype == "colororimage" || $displaytype == "radio") {
                $displaytypenumber++;
            }
        }
    }
    return $displaytypenumber;
}
<div id="colored_variable_tab_data" class="panel woocommerce_options_panel">
	    
        <?php 
$product = get_product($post->ID);
?>
	    <?php 
if ($product->product_type == 'variable') {
    ?>
	    <?php 
    $product = new WC_Product_Variable($post->ID);
    ?>
 
	    <?php 
    $attributes = $product->get_variation_attributes();
    ?>
	    <?php 
}
?>

	    
		
		
		<div class="wcva-upper-div">
		 <table class="widefat" width="100%" style="border:none;">
		  <tr>
		   <td width="70%"><?php 
echo __('Enable one attribute swatches On shop/archive pages', 'wcva');
?>
</td>
	       <td width="30%"><input type="checkbox" id="wcva_shop_swatches" name="shop_swatches" value="yes" <?php 
if (isset($shop_swatches) && $shop_swatches == "yes") {