/** * 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); }
<?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;