';
else :
echo '
';
endif;
}
}
if (!function_exists('woocommerce_output_content_wrapper_end')) {
function woocommerce_output_content_wrapper_end() {
echo '
';
}
}
/**
* Compatibility (for globals)
*
* Genisis shows products via an action, so ensure the $_product variable is set
**/
function woocommerce_before_single_product( $post, $product ) {
global $_product;
if (is_null($_product)) $_product = $product;
}
/**
* Sale Flash
**/
if (!function_exists('woocommerce_show_product_sale_flash')) {
function woocommerce_show_product_sale_flash( $post, $_product ) {
if ($_product->is_on_sale()) echo apply_filters('woocommerce_sale_flash', '
'.__('Sale!', 'woothemes').'', $post, $_product);
}
}
/**
* Sidebar
**/
if (!function_exists('woocommerce_get_sidebar')) {
function woocommerce_get_sidebar() {
get_sidebar('shop');
}
}
/**
* Products Loop
**/
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
function woocommerce_template_loop_add_to_cart( $post, $_product ) {
// No price set - so no button
if( $_product->get_price() === '' && $_product->product_type!=='external') return;
if (!$_product->is_in_stock()) :
echo '
'. apply_filters('out_of_stock_add_to_cart_text', __('Read More', 'woothemes')).'';
return;
endif;
switch ($_product->product_type) :
case "variable" :
$link = get_permalink($post->ID);
$label = apply_filters('variable_add_to_cart_text', __('Select options', 'woothemes'));
break;
case "grouped" :
$link = get_permalink($post->ID);
$label = apply_filters('grouped_add_to_cart_text', __('View options', 'woothemes'));
break;
case "external" :
$link = get_permalink($post->ID);
$label = apply_filters('external_add_to_cart_text', __('Read More', 'woothemes'));
break;
default :
$link = esc_url( $_product->add_to_cart_url() );
$label = apply_filters('add_to_cart_text', __('Add to cart', 'woothemes'));
break;
endswitch;
echo sprintf('
%s', $link, $_product->id, $_product->product_type, $label);
}
}
if (!function_exists('woocommerce_template_loop_product_thumbnail')) {
function woocommerce_template_loop_product_thumbnail( $post, $_product ) {
echo woocommerce_get_product_thumbnail();
}
}
if (!function_exists('woocommerce_template_loop_price')) {
function woocommerce_template_loop_price( $post, $_product ) {
$price_html = $_product->get_price_html();
if (!$price_html) return;
?>
is_visible( true ) && $post->post_parent > 0) : wp_safe_redirect(get_permalink($post->post_parent)); exit; endif;
if (!$_product->is_visible( true )) : wp_safe_redirect(home_url()); exit; endif;
}
}
/**
* Before Single Products Summary Div
**/
if (!function_exists('woocommerce_show_product_images')) {
function woocommerce_show_product_images() {
global $post, $woocommerce;
echo '
';
}
}
if (!function_exists('woocommerce_show_product_thumbnails')) {
function woocommerce_show_product_thumbnails() {
global $post;
echo '
';
$thumb_id = get_post_thumbnail_id();
$small_thumbnail_size = apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail');
$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => null,
'post_parent' => $post->ID,
'post__not_in' => array($thumb_id),
'post_mime_type' => 'image',
'meta_query' => array(
array(
'key' => '_woocommerce_exclude_image',
'value' => '1',
'compare' => '!='
)
)
);
$attachments = get_posts($args);
if ($attachments) :
$loop = 0;
$columns = apply_filters('woocommerce_product_thumbnails_columns', 3);
foreach ( $attachments as $attachment ) :
$loop++;
$_post = & get_post( $attachment->ID );
$url = wp_get_attachment_url($_post->ID);
$post_title = esc_attr($_post->post_title);
$image = wp_get_attachment_image($attachment->ID, $small_thumbnail_size);
echo '
'.$image.'';
endforeach;
endif;
wp_reset_query();
echo '
';
}
}
/**
* After Single Products Summary Div
**/
if (!function_exists('woocommerce_output_product_data_tabs')) {
function woocommerce_output_product_data_tabs() {
woocommerce_get_template('single-product/tabs.php', false);
}
}
/**
* Product summary box
**/
if (!function_exists('woocommerce_template_single_price')) {
function woocommerce_template_single_price( $post, $_product ) {
?>
get_price_html(); ?>
post_excerpt) echo '
' . wpautop(wptexturize($post->post_excerpt)) . '
';
}
}
if (!function_exists('woocommerce_template_single_meta')) {
function woocommerce_template_single_meta( $post, $_product ) {
?>
is_type('simple') && get_option('woocommerce_enable_sku')=='yes') : ?> sku; ?>.get_categories( ', ', ' '.__('Category:', 'woothemes').' ', '.'); ?>get_tags( ', ', ' '.__('Tags:', 'woothemes').' ', '.'); ?>
';
add_action( 'wp_footer', 'woocommerce_sharethis_script' );
endif;
}
}
/**
* Sharethis
*
* Adds social sharing code to the footer
**/
if (!function_exists('woocommerce_sharethis_script')) {
function woocommerce_sharethis_script() {
if (is_single() && get_option('woocommerce_sharethis')) :
if (is_ssl()) :
$sharethis = 'https://ws.sharethis.com/button/buttons.js';
else :
$sharethis = 'http://w.sharethis.com/button/buttons.js';
endif;
echo '';
endif;
}
}
/**
* Product Add to cart buttons
**/
if (!function_exists('woocommerce_template_single_add_to_cart')) {
function woocommerce_template_single_add_to_cart( $post, $_product ) {
do_action( 'woocommerce_' . $_product->product_type . '_add_to_cart', $post, $_product );
}
}
if (!function_exists('woocommerce_simple_add_to_cart')) {
function woocommerce_simple_add_to_cart( $post, $_product ) {
woocommerce_get_template('single-product/add-to-cart/simple.php', false);
}
}
if (!function_exists('woocommerce_grouped_add_to_cart')) {
function woocommerce_grouped_add_to_cart( $post, $_product ) {
woocommerce_get_template('single-product/add-to-cart/grouped.php', false);
}
}
if (!function_exists('woocommerce_variable_add_to_cart')) {
function woocommerce_variable_add_to_cart( $post, $_product ) {
global $woocommerce, $available_variations, $attributes, $selected_attributes;
$attributes = $_product->get_available_attribute_variations();
$default_attributes = (array) maybe_unserialize(get_post_meta( $post->ID, '_default_attributes', true ));
$selected_attributes = apply_filters( 'woocommerce_product_default_attributes', $default_attributes );
// Put available variations into an array and put in a Javascript variable (JSON encoded)
$available_variations = array();
foreach($_product->get_children() as $child_id) {
$variation = $_product->get_child( $child_id );
if($variation instanceof woocommerce_product_variation) {
if (get_post_status( $variation->get_variation_id() ) != 'publish') continue; // Disabled
$variation_attributes = $variation->get_variation_attributes();
$availability = $variation->get_availability();
$availability_html = (!empty($availability['availability'])) ? apply_filters( 'woocommerce_stock_html', ''. $availability['availability'].'
', $availability['availability'] ) : '';
if (has_post_thumbnail($variation->get_variation_id())) {
$attachment_id = get_post_thumbnail_id( $variation->get_variation_id() );
$large_thumbnail_size = apply_filters('single_product_large_thumbnail_size', 'shop_single');
$image = current(wp_get_attachment_image_src( $attachment_id, $large_thumbnail_size ));
$image_link = current(wp_get_attachment_image_src( $attachment_id, 'full' ));
} else {
$image = '';
$image_link = '';
}
$available_variations[] = array(
'variation_id' => $variation->get_variation_id(),
'attributes' => $variation_attributes,
'image_src' => $image,
'image_link' => $image_link,
'price_html' => ''.__('This is a demo store for testing purposes — no orders shall be fulfilled.', 'woothemes').'
';
endif;
}
/**
* display product sub categories as thumbnails
**/
function woocommerce_product_subcategories() {
global $woocommerce, $woocommerce_loop, $wp_query, $wp_the_query, $_chosen_attributes;
if ($wp_query !== $wp_the_query) return; // Detect main query
if (sizeof($_chosen_attributes)>0 || (isset($_GET['max_price']) && isset($_GET['min_price']))) return; // Don't show when filtering
if (is_search()) return;
if (!is_product_category() && !is_shop()) return;
if (is_product_category() && get_option('woocommerce_show_subcategories')=='no') return;
if (is_shop() && get_option('woocommerce_shop_show_subcategories')=='no') return;
if (is_paged()) return;
$product_cat_slug = get_query_var('product_cat');
if ($product_cat_slug) :
$product_cat = get_term_by('slug', $product_cat_slug, 'product_cat');
$parent = $product_cat->term_id;
else :
$parent = 0;
endif;
// NOTE: using child_of instead of parent - this is not ideal but due to a WP bug (http://core.trac.wordpress.org/ticket/15626) pad_counts won't work
$args = array(
'child_of' => $parent,
'menu_order' => 'ASC',
'hide_empty' => 1,
'hierarchical' => 1,
'taxonomy' => 'product_cat',
'pad_counts' => 1
);
$categories = get_categories( $args );
if ($categories) :
$found = false;
foreach ($categories as $category) :
if ($category->parent != $parent) continue;
$found = true;
$woocommerce_loop['loop']++;
?>
: