Example #1
0
/**
 * form shortcode of variation fields for product
 * 
 * Note : those will be different for rods and lures so we create an overwrite ot the template 
 */
function pierry_show_variation_attributes()
{
    global $post;
    $_pf = new WC_Product_Factory();
    $product = $_pf->get_product($post->ID);
    $field_desc = pierry_variation_fields_get_available_fields();
    $fields = pierry_variation_fields_get($post->ID);
    $attributes = $attributes = $product->get_attributes();
    $categories = majorcraft_get_all_categories($post->ID);
    //if(in_array('lures', $categories))  {
    $variation_attributes = array('columns' => 2, 'fields' => array('is_in_stock' => 'Status'));
    foreach ($attributes as $attribute) {
        if ($attribute['is_visible']) {
            $variation_attributes['fields']['attribute_' . $attribute['name']] = wc_attribute_label($attribute['name']);
        }
    }
    foreach ($fields as $slug => $f) {
        $intersection = array_intersect(array_keys($categories), array_values($field_desc[$slug]->cats));
        if (!empty($intersection)) {
            $variation_attributes['fields'][$slug] = $field_desc[$slug]->name;
        }
    }
    /*}
    	else if(in_array('rods', $categories)) {
    		
    	}*/
    $i = 0;
    $shortcode = '[pierry_variation_attrbutes columns="' . $variation_attributes['columns'] . '"';
    if (!empty($variation_attributes['fields']) && is_array($variation_attributes['fields'])) {
        $shortcode .= ' fields="';
        foreach ($variation_attributes['fields'] as $slug => $name) {
            if ($i > 0) {
                $shortcode .= ';';
            }
            $shortcode .= $slug . '=>' . $name . ":";
            $i++;
        }
    }
    $shortcode .= '"]';
    echo do_shortcode($shortcode);
}
function pierry_variation_fields_variation($variation_data, $product, $variation)
{
    $id = $variation->get_variation_id();
    $custom_fields = pierry_variation_fields_get($id);
    foreach ($custom_fields as $slug => $value) {
        $variation_data[strtolower($slug)] = $value;
    }
    return $variation_data;
}
<?php

global $post, $woocommerce, $product;
$available_variations = $product->get_available_variations();
$attributes = $product->get_attributes();
$fields_desc = pierry_variation_fields_get_available_fields();
$fields = pierry_variation_fields_get($post->ID);
// filter out only fields for our product categories
foreach ($fields_desc as $slug => $field) {
    if (empty(array_intersect(array_keys($categories), array_values($field->cats)))) {
        unset($fields_desc[$slug]);
    }
}
?>
<div class="majorcraft-rods-variations">
	<div class="majorcraft-rods-info">USE FILTERS TO FIND THE RIGHT MODEL</div>
	<div class="majorcraft-rods-filters">
		<?php 
foreach ($fields_desc as $slug => $field) {
    $values = pierry_variation_fields_get_all_field_values($product, $slug);
    ?>
			<th class="<?php 
    echo $slug;
    ?>
-column">
			<?php 
    if (sizeof($values) > 1) {
        ?>
				<select>
					<option value=""><?php 
        echo $field->name;