From a88d47c6d52b9e3579fad965924a5bc60151394a Mon Sep 17 00:00:00 2001 From: John Cotton Date: Thu, 24 Nov 2011 00:24:24 +0000 Subject: [PATCH] Added filter for HTML that displays stock levels --- woocommerce_template_functions.php | 540 +++++++++++++++-------------- 1 file changed, 272 insertions(+), 268 deletions(-) diff --git a/woocommerce_template_functions.php b/woocommerce_template_functions.php index 0f8d41e0c1f..4ed6127c4b1 100644 --- a/woocommerce_template_functions.php +++ b/woocommerce_template_functions.php @@ -1,7 +1,7 @@
'; else : - echo '
'; + echo '
'; endif; } } if (!function_exists('woocommerce_output_content_wrapper_end')) { - function woocommerce_output_content_wrapper_end() { + function woocommerce_output_content_wrapper_end() { if ( get_option('template') === 'twentyeleven' ) : echo '
'; else : @@ -44,8 +44,8 @@ if (!function_exists('woocommerce_show_product_sale_flash')) { * Sidebar **/ if (!function_exists('woocommerce_get_sidebar')) { - function woocommerce_get_sidebar() { - get_sidebar('shop'); + function woocommerce_get_sidebar() { + get_sidebar('shop'); } } @@ -54,15 +54,15 @@ if (!function_exists('woocommerce_get_sidebar')) { **/ 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); @@ -81,7 +81,7 @@ if (!function_exists('woocommerce_template_loop_add_to_cart')) { $label = apply_filters('add_to_cart_text', __('Add to cart', 'woothemes')); break; endswitch; - + echo sprintf('%s', $link, $_product->id, $_product->product_type, $label); } } @@ -104,7 +104,7 @@ if (!function_exists('woocommerce_template_loop_price')) { if (!function_exists('woocommerce_check_product_visibility')) { function woocommerce_check_product_visibility( $post, $_product ) { if (!$_product->is_visible() && $post->post_parent > 0) : wp_safe_redirect(get_permalink($post->post_parent)); exit; endif; - + if (!$_product->is_visible()) : wp_safe_redirect(home_url()); exit; endif; } } @@ -114,41 +114,41 @@ if (!function_exists('woocommerce_check_product_visibility')) { **/ if (!function_exists('woocommerce_show_product_images')) { function woocommerce_show_product_images() { - + global $_product, $post, $woocommerce; echo '
'; if (has_post_thumbnail()) : - + $thumb_id = get_post_thumbnail_id(); $large_thumbnail_size = apply_filters('single_product_large_thumbnail_size', 'shop_single'); - + echo '' . get_the_post_thumbnail($post->ID, $large_thumbnail_size) . ''; - - else : - echo 'Placeholder'; - endif; + + else : + echo 'Placeholder'; + endif; do_action('woocommerce_product_thumbnails'); - + echo '
'; - + } } if (!function_exists('woocommerce_show_product_thumbnails')) { function woocommerce_show_product_thumbnails() { - + global $_product, $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, + $args = array( + 'post_type' => 'attachment', + 'numberposts' => -1, + 'post_status' => null, 'post_parent' => $post->ID, 'post__not_in' => array($thumb_id), 'post_mime_type' => 'image', @@ -159,31 +159,31 @@ if (!function_exists('woocommerce_show_product_thumbnails')) { 'compare' => '!=' ) ) - ); + ); $attachments = get_posts($args); if ($attachments) : $loop = 0; $columns = apply_filters('woocommerce_product_thumbnails_columns', 3); - foreach ( $attachments as $attachment ) : - + 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 '
'; - + } } @@ -192,16 +192,16 @@ if (!function_exists('woocommerce_show_product_thumbnails')) { **/ if (!function_exists('woocommerce_output_product_data_tabs')) { function woocommerce_output_product_data_tabs() { - + ?>
    -
+
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; - + } } @@ -254,15 +254,15 @@ if (!function_exists('woocommerce_template_single_sharing')) { 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; } } @@ -280,27 +280,27 @@ if (!function_exists('woocommerce_simple_add_to_cart')) { function woocommerce_simple_add_to_cart() { global $_product; $availability = $_product->get_availability(); - + // No price set - so no button if( $_product->get_price() === '') return; - if ($availability['availability']) : ?> -

- '.$availability['availability'].'

', $availability['availability'] ); + endif; + // Don't show cart if out of stock if (!$_product->is_in_stock()) : echo ''; return; endif; - + echo ''; - - do_action('woocommerce_before_add_to_cart_form'); - + + do_action('woocommerce_before_add_to_cart_form'); + ?>
- + is_downloadable()) : ?> @@ -308,21 +308,21 @@ if (!function_exists('woocommerce_simple_add_to_cart')) { - + - +
- @@ -332,53 +332,57 @@ if (!function_exists('woocommerce_grouped_add_to_cart')) { get_children() as $child_id) : $child_product = $_product->get_child( $child_id ); $cavailability = $child_product->get_availability(); ?>
-
'; } } @@ -597,21 +601,21 @@ if (!function_exists('woocommerce_product_reviews_panel')) { } } - + /** * WooCommerce Product Thumbnail **/ if (!function_exists('woocommerce_get_product_thumbnail')) { function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0 ) { - + global $post, $woocommerce; - + if (!$placeholder_width) $placeholder_width = $woocommerce->get_image_size('shop_catalog_image_width'); if (!$placeholder_height) $placeholder_height = $woocommerce->get_image_size('shop_catalog_image_height'); - + if ( has_post_thumbnail() ) return get_the_post_thumbnail($post->ID, $size); else return 'Placeholder'; - + } } @@ -624,15 +628,15 @@ if (!function_exists('woocommerce_output_related_products')) { woocommerce_related_products( 2, 2 ); } } - + if (!function_exists('woocommerce_related_products')) { function woocommerce_related_products( $posts_per_page = 4, $post_columns = 4, $orderby = 'rand' ) { - + global $_product, $woocommerce_loop; - + // Pass vars to loop $woocommerce_loop['columns'] = $post_columns; - + $related = $_product->get_related(); if (sizeof($related)>0) : echo ''; endif; wp_reset_query(); - + } } @@ -659,7 +663,7 @@ if (!function_exists('woocommerce_related_products')) { if (!function_exists('woocommerce_shipping_calculator')) { function woocommerce_shipping_calculator() { global $woocommerce; - if ($woocommerce->shipping->enabled && get_option('woocommerce_enable_shipping_calc')=='yes' && $woocommerce->cart->needs_shipping()) : + if ($woocommerce->shipping->enabled && get_option('woocommerce_enable_shipping_calc')=='yes' && $woocommerce->cart->needs_shipping()) : ?>

@@ -667,7 +671,7 @@ if (!function_exists('woocommerce_shipping_calculator')) {

'; - + foreach ($available_methods as $method ) : - + echo ''; - + endforeach; - + echo ''; endif; ?> @@ -791,16 +795,16 @@ if (!function_exists('woocommerce_cart_totals')) { cart->get_cart_tax()) : ?> countries->tax_or_vat(); ?> customer->is_customer_outside_base()) : ?>countries->estimated_for_prefix() . __($woocommerce->countries->countries[ $woocommerce->countries->get_base_country() ], 'woothemes') ); ?> - cart->get_cart_tax(); + cart->get_cart_tax(); ?> - + cart->get_discounts_after_tax()) : ?> -cart->get_discounts_after_tax(); ?> - + cart->get_total(); ?> @@ -829,9 +833,9 @@ if (!function_exists('woocommerce_cart_totals')) { if (!function_exists('woocommerce_login_form')) { function woocommerce_login_form( $message = '' ) { global $woocommerce; - + if (is_user_logged_in()) return; - + ?> @@ -844,7 +848,7 @@ if (!function_exists('woocommerce_login_form')) {

- +

nonce_field('login', 'login') ?> @@ -860,13 +864,13 @@ if (!function_exists('woocommerce_login_form')) { **/ if (!function_exists('woocommerce_checkout_login_form')) { function woocommerce_checkout_login_form() { - + if (is_user_logged_in()) return; - + if (get_option('woocommerce_enable_signup_and_login_from_checkout')=="no") return; - + $info_message = apply_filters('woocommerce_checkout_login_message', __('Already registered?', 'woothemes')); - + ?>

', $wrap_after = '
', $before = '', $after = '', $home = null ) { - + global $post, $wp_query, $author, $paged; - - if( !$home ) $home = _x('Home', 'breadcrumb', 'woothemes'); - + + if( !$home ) $home = _x('Home', 'breadcrumb', 'woothemes'); + $home_link = home_url(); - + $prepend = ''; - + if ( get_option('woocommerce_prepend_shop_page_to_urls')=="yes" && get_option('woocommerce_shop_page_id') && get_option('page_on_front') !== get_option('woocommerce_shop_page_id') ) $prepend = $before . '' . get_the_title( get_option('woocommerce_shop_page_id') ) . ' ' . $after . $delimiter; - + if ( (!is_home() && !is_front_page() && !(is_post_type_archive() && get_option('page_on_front')==get_option('woocommerce_shop_page_id'))) || is_paged() ) : - + echo $wrap_before; - + echo $before . '' . $home . ' ' . $after . $delimiter ; - + if ( is_category() ) : - + $cat_obj = $wp_query->get_queried_object(); $this_category = $cat_obj->term_id; $this_category = get_category( $this_category ); @@ -907,13 +911,13 @@ if (!function_exists('woocommerce_breadcrumb')) { echo get_category_parents($parent_category, TRUE, $delimiter ); endif; echo $before . single_cat_title('', false) . $after; - + elseif ( is_tax('product_cat') ) : - + //echo $before . '' . ucwords(get_option('woocommerce_shop_slug')) . '' . $after . $delimiter; - + $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); - + $parents = array(); $parent = $term->parent; while ($parent): @@ -928,51 +932,51 @@ if (!function_exists('woocommerce_breadcrumb')) { echo $before . '' . $item->name . '' . $after . $delimiter; endforeach; endif; - + $queried_object = $wp_query->get_queried_object(); echo $prepend . $before . $queried_object->name . $after; - + elseif ( is_tax('product_tag') ) : - + $queried_object = $wp_query->get_queried_object(); echo $prepend . $before . __('Products tagged “', 'woothemes') . $queried_object->name . '”' . $after; - + elseif ( is_day() ) : - + echo $before . '' . get_the_time('Y') . '' . $after . $delimiter; echo $before . '' . get_the_time('F') . '' . $after . $delimiter; echo $before . get_the_time('d') . $after; - + elseif ( is_month() ) : - + echo $before . '' . get_the_time('Y') . '' . $after . $delimiter; echo $before . get_the_time('F') . $after; - + elseif ( is_year() ) : - + echo $before . get_the_time('Y') . $after; - + elseif ( is_post_type_archive('product') && get_option('page_on_front') !== get_option('woocommerce_shop_page_id') ) : - + $_name = get_option('woocommerce_shop_page_id') ? get_the_title( get_option('woocommerce_shop_page_id') ) : ucwords(get_option('woocommerce_shop_slug')); - + if (is_search()) : - + echo $before . '' . $_name . '' . $delimiter . __('Search results for “', 'woothemes') . get_search_query() . '”' . $after; - + else : - + echo $before . '' . $_name . '' . $after; - + endif; - + elseif ( is_single() && !is_attachment() ) : - + if ( get_post_type() == 'product' ) : - + //echo $before . '' . ucwords(get_option('woocommerce_shop_slug')) . '' . $after . $delimiter; echo $prepend; - + if ($terms = wp_get_object_terms( $post->ID, 'product_cat' )) : $term = current($terms); $parents = array(); @@ -991,9 +995,9 @@ if (!function_exists('woocommerce_breadcrumb')) { endif; echo $before . '' . $term->name . '' . $after . $delimiter; endif; - + echo $before . get_the_title() . $after; - + elseif ( get_post_type() != 'post' ) : $post_type = get_post_type_object(get_post_type()); $slug = $post_type->rewrite; @@ -1004,30 +1008,30 @@ if (!function_exists('woocommerce_breadcrumb')) { echo get_category_parents($cat, TRUE, $delimiter); echo $before . get_the_title() . $after; endif; - + elseif ( is_404() ) : - + echo $before . __('Error 404', 'woothemes') . $after; - + elseif ( !is_single() && !is_page() && get_post_type() != 'post' ) : - + $post_type = get_post_type_object(get_post_type()); if ($post_type) : echo $before . $post_type->labels->singular_name . $after; endif; - + elseif ( is_attachment() ) : - + $parent = get_post($post->post_parent); $cat = get_the_category($parent->ID); $cat = $cat[0]; echo get_category_parents($cat, TRUE, '' . $delimiter); echo $before . '' . $parent->post_title . '' . $after . $delimiter; echo $before . get_the_title() . $after; - + elseif ( is_page() && !$post->post_parent ) : - + echo $before . get_the_title() . $after; - + elseif ( is_page() && $post->post_parent ) : - + $parent_id = $post->post_parent; $breadcrumbs = array(); while ($parent_id) { @@ -1040,32 +1044,32 @@ if (!function_exists('woocommerce_breadcrumb')) { echo $crumb . '' . $delimiter; endforeach; echo $before . get_the_title() . $after; - + elseif ( is_search() ) : - + echo $before . __('Search results for “', 'woothemes') . get_search_query() . '”' . $after; - + elseif ( is_tag() ) : - + echo $before . __('Posts tagged “', 'woothemes') . single_tag_title('', false) . '”' . $after; - + elseif ( is_author() ) : - + $userdata = get_userdata($author); echo $before . __('Author:', 'woothemes') . ' ' . $userdata->display_name . $after; - + endif; - + if ( get_query_var('paged') ) : - + echo ' (' . __('Page', 'woothemes') . ' ' . get_query_var('paged') .')'; - + endif; - + echo $wrap_after; - + endif; - + } } @@ -1073,13 +1077,13 @@ if (!function_exists('woocommerce_breadcrumb')) { * Remove the singular class for woocommerce single product **/ function woocommerce_body_classes ($classes) { - + if( ! is_singular('product') ) return $classes; - + $key = array_search('singular', $classes); if ( $key !== false ) unset($classes[$key]); return $classes; - + } /** @@ -1098,7 +1102,7 @@ function woocommerce_upsell_display() { 'post__in' => $upsells ); query_posts($args); - woocommerce_get_template_part( 'loop', 'shop' ); + woocommerce_get_template_part( 'loop', 'shop' ); echo ''; endif; wp_reset_query(); @@ -1111,7 +1115,7 @@ function woocommerce_cross_sell_display() { global $woocommerce_loop, $woocommerce; $woocommerce_loop['columns'] = 2; $crosssells = $woocommerce->cart->get_cross_sells(); - + if (sizeof($crosssells)>0) : echo '

'.__('You may be interested in…', 'woothemes').'

'; $args = array( @@ -1122,7 +1126,7 @@ function woocommerce_cross_sell_display() { 'post__in' => $crosssells ); query_posts($args); - woocommerce_get_template_part( 'loop', 'shop' ); + woocommerce_get_template_part( 'loop', 'shop' ); echo '
'; endif; wp_reset_query(); @@ -1151,11 +1155,11 @@ function woocommerce_demo_store() { **/ 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; @@ -1163,14 +1167,14 @@ function woocommerce_product_subcategories() { 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, @@ -1183,46 +1187,46 @@ function woocommerce_product_subcategories() { ); $categories = get_categories( $args ); if ($categories) : - + $found = false; - foreach ($categories as $category) : - + foreach ($categories as $category) : + if ($category->parent != $parent) continue; - + $found = true; - + $woocommerce_loop['loop']++; - + ?>
  • - + - + - + - +

    name; ?> count>0) : ?>(count; ?>)

    - + - +
    - + - -
  • max_num_pages = 0; endif; - + endif; - + } /** @@ -1230,13 +1234,13 @@ function woocommerce_product_subcategories() { **/ function woocommerce_subcategory_thumbnail( $category ) { global $woocommerce; - - $small_thumbnail_size = apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail'); + + $small_thumbnail_size = apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail'); $image_width = $woocommerce->get_image_size('shop_thumbnail_image_width'); $image_height = $woocommerce->get_image_size('shop_thumbnail_image_height'); - + $thumbnail_id = get_woocommerce_term_meta( $category->term_id, 'thumbnail_id', true ); - + if ($thumbnail_id) : $image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size ); $image = $image[0]; @@ -1251,12 +1255,12 @@ function woocommerce_subcategory_thumbnail( $category ) { * Display an orders details in a table **/ function woocommerce_order_details_table( $order_id ) { - + if (!$order_id) return; - + $order = &new woocommerce_order( $order_id ); - ?> -

    + ?> +

    @@ -1295,33 +1299,33 @@ function woocommerce_order_details_table( $order_id ) { items)>0) : - - foreach($order->items as $item) : - + if (sizeof($order->items)>0) : + + foreach($order->items as $item) : + if (isset($item['variation_id']) && $item['variation_id'] > 0) : $_product = &new woocommerce_product_variation( $item['variation_id'] ); else : $_product = &new woocommerce_product( $item['id'] ); endif; - + echo ' '; - endforeach; + endforeach; endif; ?>
    '.$item['name']; - - $item_meta = &new order_item_meta( $item['item_meta'] ); + + $item_meta = &new order_item_meta( $item['item_meta'] ); $item_meta->display(); - + echo ' '.$item['qty'].' '.woocommerce_price( $item['cost']*$item['qty'], array('ex_tax_label' => 1) ).'
    - +

    @@ -1331,11 +1335,11 @@ function woocommerce_order_details_table( $order_id ) { if ($order->billing_phone) echo '
    '.__('Telephone:', 'woothemes').'
    '.$order->billing_phone.'
    '; ?> - +
    - +

    @@ -1344,12 +1348,12 @@ function woocommerce_order_details_table( $order_id ) { if (!$order->formatted_shipping_address) _e('N/A', 'woothemes'); else echo $order->formatted_shipping_address; ?>

    - +
    - +
    - -
    + +

    @@ -1357,11 +1361,11 @@ function woocommerce_order_details_table( $order_id ) { if (!$order->formatted_billing_address) _e('N/A', 'woothemes'); else echo $order->formatted_billing_address; ?>

    - +
    - +
    - +