Last active
August 29, 2015 14:07
-
-
Save webaware/931c8c216a90a16b9c62 to your computer and use it in GitHub Desktop.
Add product attributes underneath the product title on an order form from Order Form for WooCommerce. Requires version 1.0.5 or higher. Save this file as a simple plugin in the WordPress plugins folder. http://orderform-woo.webaware.net.au/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Order Form for WooCommerce Product Attributes | |
Plugin URI: https://gist.github.com/webaware/931c8c216a90a16b9c62 | |
Description: add product attributes to Order Form for WooCommerce product | |
Author: WebAware | |
Author URI: http://webaware.com.au/ | |
*/ | |
if (!defined('ABSPATH')) { | |
exit; | |
} | |
/** | |
* add product attributes to Order Form for WooCommerce product | |
* @param WC_Product $product | |
* @param array $attrs | |
*/ | |
add_action('orderform_woocommerce_order_item_end', function($product, $attrs) { | |
$attributes = $product->get_attributes(); | |
foreach ($attributes as $attribute) { | |
// must be ticked as visible | |
if (empty($attribute['is_visible'])) { | |
continue; | |
} | |
// must not be a variation | |
if (!empty($attribute['is_variation'])) { | |
continue; | |
} | |
if (empty($attribute['is_taxonomy'])) { | |
// attribute values stored locally on the product | |
$class = strtolower(sanitize_title($attribute['name'])); | |
$label = $attribute['name']; | |
$values = explode('|', $attribute['value']); | |
$values = array_map('trim', $values); | |
} | |
else { | |
// global product attributes, stored as terms of a taxonomy | |
$taxonomy = get_taxonomy($attribute['name']); | |
$class = sanitize_title($taxonomy->name); | |
$values = wp_get_post_terms($product->id, $taxonomy->name, array('fields' => 'names')); | |
// get tax label | |
if (isset($taxonomy->labels->name)) { | |
$label = $taxonomy->labels->name; | |
} | |
elseif (isset($taxonomy->label)) { | |
$label = $taxonomy->label; | |
} | |
else { | |
$label = $taxonomy->name; | |
} | |
} | |
printf('<p class="attribute-%s"><strong>%s</strong><br />', esc_attr($class), esc_html($label)); | |
$separator = ''; | |
foreach ($values as $value) { | |
printf('%s<span>%s</span>', $separator, esc_html($value)); | |
$separator = '<br/>'; | |
} | |
echo "</p>\n"; | |
} | |
}, 10, 2); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment