2011-08-10 17:11:11 +00:00
< ? php
/**
* WooCommerce Template Functions
2011-11-24 00:24:24 +00:00
*
2011-12-11 15:37:32 +00:00
* Functions used in the template files to output content - in most cases hooked in via the template actions . All functions are pluggable .
2011-08-10 17:11:11 +00:00
*
2012-04-25 09:51:20 +00:00
* @ package WooCommerce
* @ category Core
* @ author WooThemes
2011-08-10 17:11:11 +00:00
*/
2012-01-06 14:02:34 +00:00
/** Template pages ********************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_content' ) ) {
2012-01-06 14:02:34 +00:00
// This function is only used in the optional 'woocommerce.php' template
// people can add to their themes to add basic woocommerce support.
function woocommerce_content () {
2012-04-25 09:51:20 +00:00
if ( is_singular ( 'product' ) )
2012-01-06 14:02:34 +00:00
woocommerce_single_product_content ();
2012-04-25 09:51:20 +00:00
elseif ( is_tax ( 'product_cat' ) || is_tax ( 'product_tag' ) )
2012-01-06 14:02:34 +00:00
woocommerce_product_taxonomy_content ();
else
woocommerce_archive_product_content ();
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_archive_product_content' ) ) {
2012-01-13 14:17:43 +00:00
function woocommerce_archive_product_content () {
2012-04-25 09:51:20 +00:00
if ( ! is_search () ) {
$shop_page = get_post ( woocommerce_get_page_id ( 'shop' ) );
$shop_page_title = apply_filters ( 'the_title' , ( get_option ( 'woocommerce_shop_page_title' ) ) ? get_option ( 'woocommerce_shop_page_title' ) : $shop_page -> post_title );
if ( is_object ( $shop_page ) )
$shop_page_content = $shop_page -> post_content ;
} else {
$shop_page_title = __ ( 'Search Results:' , 'woocommerce' ) . ' “' . get_search_query () . '”' ;
if ( get_query_var ( 'paged' ) ) $shop_page_title .= ' — ' . __ ( 'Page' , 'woocommerce' ) . ' ' . get_query_var ( 'paged' );
2012-01-13 14:17:43 +00:00
$shop_page_content = '' ;
2012-04-25 09:51:20 +00:00
}
2012-01-13 14:17:43 +00:00
?> <h1 class="page-title"><?php echo $shop_page_title ?></h1>
2012-04-25 09:51:20 +00:00
< ? php if ( ! empty ( $shop_page_content ) ) echo apply_filters ( 'the_content' , $shop_page_content ); ?>
< ? php woocommerce_get_template_part ( 'loop' , 'shop' ); ?>
< ? php do_action ( 'woocommerce_pagination' );
}
}
if ( ! function_exists ( 'woocommerce_product_taxonomy_content' ) ) {
function woocommerce_product_taxonomy_content () {
global $wp_query ;
$term = get_term_by ( 'slug' , get_query_var ( $wp_query -> query_vars [ 'taxonomy' ] ) , $wp_query -> query_vars [ 'taxonomy' ] );
?> <h1 class="page-title"><?php echo wptexturize( $term->name ); ?></h1>
< ? php if ( $term -> description ) : ?>
< div class = " term_description " >< ? php echo wpautop ( wptexturize ( $term -> description ) ); ?> </div>
2012-01-13 14:17:43 +00:00
< ? php endif ; ?>
2012-04-25 09:51:20 +00:00
< ? php woocommerce_get_template_part ( 'loop' , 'shop' ); ?>
< ? php do_action ( 'woocommerce_pagination' );
2012-01-13 14:17:43 +00:00
}
2012-01-06 14:02:34 +00:00
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_single_product_content' ) ) {
function woocommerce_single_product_content ( $wc_query = false ) {
2012-01-26 11:23:42 +00:00
// Let developers override the query used, in case they want to use this function for their own loop/wp_query
2012-04-25 09:51:20 +00:00
if ( ! $wc_query ) {
2012-01-26 11:23:42 +00:00
global $wp_query ;
2012-04-25 09:51:20 +00:00
2012-01-26 11:23:42 +00:00
$wc_query = $wp_query ;
}
2012-04-25 09:51:20 +00:00
2012-01-26 11:23:42 +00:00
if ( $wc_query -> have_posts () ) while ( $wc_query -> have_posts () ) : $wc_query -> the_post (); ?>
2012-04-25 09:51:20 +00:00
< ? php do_action ( 'woocommerce_before_single_product' ); ?>
2012-01-06 14:02:34 +00:00
< div itemscope itemtype = " http://schema.org/Product " id = " product-<?php the_ID(); ?> " < ? php post_class (); ?> >
2012-04-25 09:51:20 +00:00
< ? php do_action ( 'woocommerce_before_single_product_summary' ); ?>
2012-04-23 12:57:07 +00:00
< div class = " summary " itemprop = " offers " itemscope itemtype = " http://schema.org/Offer " >
2012-04-25 09:51:20 +00:00
< ? php do_action ( 'woocommerce_single_product_summary' ); ?>
2012-01-06 14:02:34 +00:00
</ div >
2012-04-28 17:28:18 +00:00
2012-04-25 09:51:20 +00:00
< ? php do_action ( 'woocommerce_after_single_product_summary' ); ?>
2012-04-28 17:28:18 +00:00
2012-01-06 14:02:34 +00:00
</ div >
2012-01-26 11:23:42 +00:00
2012-04-25 09:51:20 +00:00
< ? php do_action ( 'woocommerce_after_single_product' ); ?>
2012-01-13 14:17:43 +00:00
< ? php endwhile ;
2012-04-25 09:51:20 +00:00
2012-01-13 14:17:43 +00:00
}
2012-01-06 14:02:34 +00:00
}
2011-12-11 12:39:35 +00:00
/** Global ****************************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_content_wrapper' ) ) {
2011-11-24 00:24:24 +00:00
function woocommerce_output_content_wrapper () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/wrapper-start.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_content_wrapper_end' ) ) {
2011-11-24 00:24:24 +00:00
function woocommerce_output_content_wrapper_end () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/wrapper-end.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-02-08 15:20:32 +00:00
/**
* Messages
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_messages' ) ) {
2012-02-08 15:20:32 +00:00
function woocommerce_show_messages () {
global $woocommerce ;
2012-04-25 09:51:20 +00:00
if ( $woocommerce -> error_count () > 0 ) {
woocommerce_get_template ( 'shop/errors.php' , array (
'errors' => $woocommerce -> get_errors ()
) );
2012-04-10 17:06:25 +00:00
}
2012-04-25 09:51:20 +00:00
if ( $woocommerce -> message_count () > 0 ) {
woocommerce_get_template ( 'shop/messages.php' , array (
'messages' => $woocommerce -> get_messages ()
) );
2012-02-08 15:20:32 +00:00
}
2012-04-25 09:51:20 +00:00
2012-02-08 15:20:32 +00:00
$woocommerce -> clear_messages ();
}
}
2011-08-10 17:11:11 +00:00
/**
* Sidebar
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_get_sidebar' ) ) {
2011-11-24 00:24:24 +00:00
function woocommerce_get_sidebar () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/sidebar.php' );
2011-12-12 11:35:54 +00:00
}
}
/**
* Prevent Cache
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_prevent_sidebar_cache' ) ) {
function woocommerce_prevent_sidebar_cache ( $sidebar ) {
echo '<!--mfunc get_sidebar( "' . $sidebar . '" ) --><!--/mfunc-->' ;
2011-08-10 17:11:11 +00:00
}
}
2011-12-12 12:28:07 +00:00
/**
* Demo Banner
*
* Adds a demo store banner to the site if enabled
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_demo_store' ) ) {
2011-12-12 12:28:07 +00:00
function woocommerce_demo_store () {
2012-04-25 09:51:20 +00:00
if ( get_option ( 'woocommerce_demo_store' ) == 'no' ) return ;
echo apply_filters ( 'woocommerce_demo_store' , '<p class="demo_store">' . __ ( 'This is a demo store for testing purposes — no orders shall be fulfilled.' , 'woocommerce' ) . '</p>' );
2011-12-12 12:28:07 +00:00
}
}
2011-12-11 01:10:24 +00:00
/** Loop ******************************************************************/
2011-08-10 17:11:11 +00:00
/**
* Products Loop
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_loop_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_loop_add_to_cart () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'loop/add-to-cart.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_loop_product_thumbnail' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_loop_product_thumbnail () {
2011-08-10 17:11:11 +00:00
echo woocommerce_get_product_thumbnail ();
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_loop_price' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_loop_price () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'loop/price.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_loop_sale_flash' ) ) {
2011-12-11 15:20:34 +00:00
function woocommerce_show_product_loop_sale_flash () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'loop/sale-flash.php' );
2011-12-11 14:40:25 +00:00
}
}
2011-08-10 17:11:11 +00:00
2011-12-12 11:35:54 +00:00
/**
* WooCommerce Product Thumbnail
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_get_product_thumbnail' ) ) {
function woocommerce_get_product_thumbnail ( $size = 'shop_catalog' , $placeholder_width = 0 , $placeholder_height = 0 ) {
2011-12-12 11:35:54 +00:00
global $post , $woocommerce ;
2012-04-25 09:51:20 +00:00
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' );
2011-12-12 11:35:54 +00:00
2012-04-25 09:51:20 +00:00
if ( has_post_thumbnail () )
return get_the_post_thumbnail ( $post -> ID , $size ); else return '<img src="' . woocommerce_placeholder_img_src () . '" alt="Placeholder" width="' . $placeholder_width . '" height="' . $placeholder_height . '" />' ;
2011-12-12 11:35:54 +00:00
}
}
2011-12-11 01:10:24 +00:00
/**
* Pagination
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_pagination' ) ) {
2011-12-11 01:10:24 +00:00
function woocommerce_pagination () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'loop/pagination.php' );
2011-12-11 01:10:24 +00:00
}
}
/**
* Sorting
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_catalog_ordering' ) ) {
2011-12-11 01:10:24 +00:00
function woocommerce_catalog_ordering () {
2012-04-25 09:51:20 +00:00
if ( ! isset ( $_SESSION [ 'orderby' ] ) )
$_SESSION [ 'orderby' ] = apply_filters ( 'woocommerce_default_catalog_orderby' , get_option ( 'woocommerce_default_catalog_orderby' ) );
woocommerce_get_template ( 'loop/sorting.php' );
2011-12-11 01:10:24 +00:00
}
}
2011-12-11 01:08:33 +00:00
/** Single Product ********************************************************/
2011-08-10 17:11:11 +00:00
/**
* Before Single Products Summary Div
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_images' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_show_product_images () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/product-image.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_thumbnails' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_show_product_thumbnails () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/product-thumbnails.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_product_data_tabs' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_output_product_data_tabs () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs.php' );
2012-03-13 12:52:53 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_title' ) ) {
2012-03-13 12:52:53 +00:00
function woocommerce_template_single_title () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/title.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_price' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_single_price () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/price.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_excerpt' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_single_excerpt () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/short-description.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_meta' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_single_meta () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/meta.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_sharing' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_single_sharing () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/share.php' );
2011-09-04 00:02:44 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_sale_flash' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_show_product_sale_flash () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/sale-flash.php' );
2011-12-11 14:40:25 +00:00
}
}
2011-09-04 00:02:44 +00:00
2011-08-10 17:11:11 +00:00
/**
* Product Add to cart buttons
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_template_single_add_to_cart () {
2011-12-11 15:20:34 +00:00
global $product ;
2012-04-25 09:51:20 +00:00
do_action ( 'woocommerce_' . $product -> product_type . '_add_to_cart' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_simple_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_simple_add_to_cart () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/simple.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_grouped_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_grouped_add_to_cart () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/grouped.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_variable_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_variable_add_to_cart () {
2012-06-10 09:15:23 +00:00
global $product ;
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/variable.php' , array (
2012-06-10 09:15:23 +00:00
'available_variations' => $product -> get_available_variations (),
'attributes' => $product -> get_variation_attributes (),
'selected_attributes' => $product -> get_variation_default_attributes ()
) );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_external_add_to_cart' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_external_add_to_cart () {
2012-02-26 11:47:49 +00:00
global $product ;
2012-04-25 09:51:20 +00:00
$product_url = get_post_meta ( $product -> id , '_product_url' , true );
$button_text = get_post_meta ( $product -> id , '_button_text' , true );
if ( ! $product_url ) return ;
woocommerce_get_template ( 'single-product/add-to-cart/external.php' , array (
'product_url' => $product_url ,
'button_text' => ( $button_text ) ? $button_text : __ ( 'Buy product' , 'woocommerce' ) ,
) );
2011-11-08 16:15:36 +00:00
}
}
2011-08-10 17:11:11 +00:00
2011-12-05 19:16:55 +00:00
/**
* Quantity inputs
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_quantity_input' ) ) {
2011-12-11 14:40:25 +00:00
function woocommerce_quantity_input ( $args = array () ) {
$defaults = array (
2012-04-25 09:51:20 +00:00
'input_name' => 'quantity' ,
'input_value' => '1' ,
'max_value' => '' ,
'min_value' => '0'
2011-12-11 14:40:25 +00:00
);
2012-04-25 09:51:20 +00:00
$args = apply_filters ( 'woocommerce_quantity_input_args' , wp_parse_args ( $args , $defaults ) );
woocommerce_get_template ( 'single-product/add-to-cart/quantity.php' , $args );
2011-12-05 19:16:55 +00:00
}
}
2011-08-10 17:11:11 +00:00
/**
* Product page tabs
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_description_tab' ) ) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_description_tab () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/tab-description.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_attributes_tab' ) ) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_attributes_tab () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/tab-attributes.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_reviews_tab' ) ) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_reviews_tab () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/tab-reviews.php' );
2011-08-10 17:11:11 +00:00
}
}
/**
* Product page tab panels
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_description_panel' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_product_description_panel () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/description.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_attributes_panel' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_product_attributes_panel () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/attributes.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_reviews_panel' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_product_reviews_panel () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/tabs/reviews.php' );
2011-08-10 17:11:11 +00:00
}
}
2011-12-12 12:28:07 +00:00
/**
* Review comments template
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_comments' ) ) {
function woocommerce_comments ( $comment , $args , $depth ) {
2011-12-12 12:28:07 +00:00
$GLOBALS [ 'comment' ] = $comment ;
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/review.php' );
2011-12-12 12:28:07 +00:00
}
}
2011-08-10 17:11:11 +00:00
/**
* WooCommerce Related Products
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_related_products' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_output_related_products () {
2012-04-25 09:51:20 +00:00
woocommerce_related_products ( 2 , 2 );
2011-08-10 17:11:11 +00:00
}
}
2011-11-24 00:24:24 +00:00
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_related_products' ) ) {
function woocommerce_related_products ( $posts_per_page = 4 , $columns = 4 , $orderby = 'rand' ) {
woocommerce_get_template ( 'single-product/related.php' , array (
'posts_per_page' => $posts_per_page ,
'orderby' => $orderby ,
'columns' => $columns
) );
2011-08-10 17:11:11 +00:00
}
}
2011-12-12 12:28:07 +00:00
/**
* Display Up Sells
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_upsell_display' ) ) {
2011-12-12 12:28:07 +00:00
function woocommerce_upsell_display () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/up-sells.php' );
2011-12-12 12:28:07 +00:00
}
}
2011-12-11 14:40:25 +00:00
/** Cart ******************************************************************/
2011-08-10 17:11:11 +00:00
/**
* WooCommerce Shipping Calculator
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_shipping_calculator' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_shipping_calculator () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'cart/shipping-calculator.php' );
2011-08-10 17:11:11 +00:00
}
}
2011-09-11 16:42:50 +00:00
/**
* WooCommerce Cart totals
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_cart_totals' ) ) {
2011-09-11 16:42:50 +00:00
function woocommerce_cart_totals () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'cart/totals.php' );
2011-09-11 16:42:50 +00:00
}
}
2011-12-12 12:28:07 +00:00
/**
* Display Cross Sells
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_cross_sell_display' ) ) {
2011-12-12 12:28:07 +00:00
function woocommerce_cross_sell_display () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'cart/cross-sells.php' );
2011-12-12 12:28:07 +00:00
}
}
2011-12-11 14:40:25 +00:00
/** Login *****************************************************************/
2011-08-10 17:11:11 +00:00
/**
* WooCommerce Login Form
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_login_form' ) ) {
2011-12-12 12:28:07 +00:00
function woocommerce_login_form ( $args = array () ) {
2012-02-03 16:17:35 +00:00
2011-12-12 12:28:07 +00:00
$defaults = array (
2012-01-05 14:55:09 +00:00
'message' => '' ,
'redirect' => ''
2011-12-12 12:28:07 +00:00
);
2011-11-24 00:24:24 +00:00
2012-04-25 09:51:20 +00:00
$args = wp_parse_args ( $args , $defaults );
woocommerce_get_template ( 'shop/form-login.php' , $args );
2011-08-10 17:11:11 +00:00
}
}
/**
2011-11-14 16:46:11 +00:00
* WooCommerce Checkout Login Form
2011-08-10 17:11:11 +00:00
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_checkout_login_form' ) ) {
2011-08-10 17:11:11 +00:00
function woocommerce_checkout_login_form () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'checkout/form-login.php' );
2011-08-10 17:11:11 +00:00
}
}
/**
* WooCommerce Breadcrumb
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_breadcrumb' ) ) {
2011-12-12 11:35:54 +00:00
function woocommerce_breadcrumb ( $args = array () ) {
2012-04-25 09:51:20 +00:00
2011-12-12 11:35:54 +00:00
$defaults = array (
2012-04-25 09:51:20 +00:00
'delimiter' => ' › ' ,
'wrap_before' => '<div id="breadcrumb">' ,
'wrap_after' => '</div>' ,
'before' => '' ,
'after' => '' ,
'home' => null
2011-12-12 11:35:54 +00:00
);
2011-11-24 00:24:24 +00:00
2012-04-25 09:51:20 +00:00
$args = wp_parse_args ( $args , $defaults );
2011-11-24 00:24:24 +00:00
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/breadcrumb.php' , $args );
2011-08-10 17:11:11 +00:00
}
}
2011-08-16 14:06:08 +00:00
/**
* Order review table for checkout
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_order_review' ) ) {
2011-12-11 15:40:17 +00:00
function woocommerce_order_review () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'checkout/review-order.php' );
2011-12-11 15:40:17 +00:00
}
2011-09-04 00:02:44 +00:00
}
2011-12-19 17:10:53 +00:00
/**
* Coupon form for checkout
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_checkout_coupon_form' ) ) {
2011-12-19 17:10:53 +00:00
function woocommerce_checkout_coupon_form () {
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'checkout/form-coupon.php' );
2011-12-19 17:10:53 +00:00
}
}
2011-10-07 19:27:10 +00:00
/**
* display product sub categories as thumbnails
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_subcategories' ) ) {
2011-12-11 15:40:17 +00:00
function woocommerce_product_subcategories () {
2012-02-03 16:17:35 +00:00
global $woocommerce , $woocommerce_loop , $wp_query , $wp_the_query , $_chosen_attributes , $product_category_found ;
2012-04-25 09:51:20 +00:00
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 ;
if ( $product_cat_slug = get_query_var ( 'product_cat' ) ) :
$product_cat = get_term_by ( 'slug' , $product_cat_slug , 'product_cat' );
$product_category_parent = $product_cat -> term_id ;
2011-12-11 15:40:17 +00:00
else :
2012-04-25 09:51:20 +00:00
$product_category_parent = 0 ;
2011-10-22 19:38:39 +00:00
endif ;
2012-04-25 09:51:20 +00:00
// 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
2011-12-11 15:40:17 +00:00
$args = array (
2012-04-25 09:51:20 +00:00
'child_of' => $product_category_parent ,
'menu_order' => 'ASC' ,
'hide_empty' => 1 ,
'hierarchical' => 1 ,
'taxonomy' => 'product_cat' ,
'pad_counts' => 1
);
$product_categories = get_categories ( $args );
if ( $product_categories ) {
woocommerce_get_template ( 'loop-product-cats.php' , array (
'product_categories' => $product_categories ,
'product_category_parent' => $product_category_parent
) );
2011-12-11 15:40:17 +00:00
// If we are hiding products disable the loop and pagination
2012-04-25 09:51:20 +00:00
if ( $product_category_found == true && get_option ( 'woocommerce_hide_products_when_showing_subcategories' ) == 'yes' ) {
2011-12-11 15:40:17 +00:00
$woocommerce_loop [ 'show_products' ] = false ;
$wp_query -> max_num_pages = 0 ;
2012-04-25 09:51:20 +00:00
}
}
2011-12-11 15:40:17 +00:00
}
2011-10-07 19:27:10 +00:00
}
2011-10-31 00:47:41 +00:00
/**
* Show subcategory thumbnail
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_subcategory_thumbnail' ) ) {
function woocommerce_subcategory_thumbnail ( $category ) {
2011-12-11 15:40:17 +00:00
global $woocommerce ;
2012-04-25 09:51:20 +00:00
$small_thumbnail_size = apply_filters ( 'single_product_small_thumbnail_size' , 'shop_catalog' );
$image_width = $woocommerce -> get_image_size ( 'shop_catalog_image_width' );
$image_height = $woocommerce -> get_image_size ( 'shop_catalog_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 );
2011-12-11 15:40:17 +00:00
$image = $image [ 0 ];
2012-04-25 09:51:20 +00:00
} else {
2012-02-24 16:23:08 +00:00
$image = woocommerce_placeholder_img_src ();
2012-04-25 09:51:20 +00:00
}
echo '<img src="' . $image . '" alt="' . $category -> name . '" width="' . $image_width . '" height="' . $image_height . '" />' ;
2011-12-11 15:40:17 +00:00
}
2011-10-07 19:27:10 +00:00
}
2011-10-31 00:47:41 +00:00
/**
2011-12-09 21:47:12 +00:00
* Displays order details in a table
2011-10-31 00:47:41 +00:00
**/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_order_details_table' ) ) {
function woocommerce_order_details_table ( $order_id ) {
if ( ! $order_id ) return ;
2012-02-03 16:17:35 +00:00
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'order/order-details.php' , array (
2012-02-03 16:17:35 +00:00
'order_id' => $order_id
2012-04-25 09:51:20 +00:00
) );
}
2011-12-21 16:03:45 +00:00
}
/** Forms ****************************************************************/
/**
* Outputs a checkout / address form field
*/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_form_field' ) ) {
function woocommerce_form_field ( $key , $args , $value = '' ) {
2011-12-21 16:03:45 +00:00
global $woocommerce ;
2012-04-25 09:51:20 +00:00
2011-12-21 16:03:45 +00:00
$defaults = array (
'type' => 'text' ,
'label' => '' ,
'placeholder' => '' ,
'required' => false ,
2012-04-25 09:51:20 +00:00
'class' => array () ,
'label_class' => array () ,
'return' => false ,
'options' => array ()
2011-12-21 16:03:45 +00:00
);
2012-04-25 09:51:20 +00:00
$args = wp_parse_args ( $args , $defaults );
if ( ( isset ( $args [ 'clear' ] ) && $args [ 'clear' ] ) ) $after = '<div class="clear"></div>' ; else $after = '' ;
$required = ( $args [ 'required' ] ) ? ' <abbr class="required" title="' . esc_attr__ ( 'required' , 'woocommerce' ) . '">*</abbr>' : '' ;
switch ( $args [ 'type' ] ) {
case " country " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label >
< select name = " ' . $key . ' " id = " ' . $key . ' " class = " country_to_state ' . implode( ' ', $args['class'] ) .' " >
< option value = " " > '.__( ' Select a country & hellip ; ', ' woocommerce ' ) .' </ option > ' ;
foreach ( $woocommerce -> countries -> get_allowed_countries () as $ckey => $cvalue ) {
$field .= '<option value="' . $ckey . '" ' . selected ( $value , $ckey , false ) . '>' . __ ( $cvalue , 'woocommerce' ) . '</option>' ;
}
$field .= '</select></p>' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " state " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label > ' ;
/* Get Country */
$country_key = ( $key == 'billing_state' ) ? 'billing_country' : 'shipping_country' ;
if ( isset ( $_POST [ $country_key ] ) ) {
$current_cc = woocommerce_clean ( $_POST [ $country_key ] );
} elseif ( is_user_logged_in () ) {
$current_cc = get_user_meta ( get_current_user_id () , $country_key , true );
} else {
$current_cc = apply_filters ( 'default_checkout_country' , ( $woocommerce -> customer -> get_country () ) ? $woocommerce -> customer -> get_country () : $woocommerce -> countries -> get_base_country () );
}
$states = $woocommerce -> countries -> states ;
if ( isset ( $states [ $current_cc ][ $value ] ) ) {
// Dropdown
$field .= '<select name="' . $key . '" id="' . $key . '" class="state_select"><option value="">' . __ ( 'Select a state…' , 'woocommerce' ) . '</option>' ;
foreach ( $states [ $current_cc ] as $ckey => $cvalue ) {
$field .= '<option value="' . $ckey . '" ' . selected ( $value , $ckey , false ) . '>' . __ ( $cvalue , 'woocommerce' ) . '</option>' ;
}
$field .= '</select>' ;
} else {
// Input
$field .= '<input type="text" class="input-text" value="' . $value . '" placeholder="' . $args [ 'placeholder' ] . '" name="' . $key . '" id="' . $key . '" />' ;
}
$field .= '</p>' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " textarea " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label >
< textarea name = " ' . $key . ' " class = " input-text " id = " ' . $key . ' " placeholder = " ' . $args['placeholder'] . ' " cols = " 5 " rows = " 2 " > '. esc_textarea( $value ) .' </ textarea >
</ p > ' . $after ;
break ;
case " checkbox " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< input type = " ' . $args['type'] . ' " class = " input-checkbox " name = " ' . $key . ' " id = " ' . $key . ' " value = " 1 " '.checked( $value, 1, false ) .' />
< label for = " ' . $key . ' " class = " checkbox ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label '] . $required . ' </ label >
</ p > ' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " password " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label >
< input type = " password " class = " input-text " name = " ' . $key . ' " id = " ' . $key . ' " placeholder = " ' . $args['placeholder'] . ' " value = " '. $value .' " />
</ p > ' . $after ;
2011-12-22 01:02:42 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " text " :
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label '] . $required . ' </ label >
< input type = " text " class = " input-text " name = " ' . $key . ' " id = " ' . $key . ' " placeholder = " ' . $args['placeholder'] . ' " value = " '. $value .' " />
</ p > ' . $after ;
2011-12-22 01:02:42 +00:00
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " select " :
$options = '' ;
if ( ! empty ( $args [ 'options' ] ) )
foreach ( $args [ 'options' ] as $option_key => $option_text )
$options .= '<option value="' . $option_key . '" ' . selected ( $value , $option_key , false ) . '>' . $option_text . '</option>' ;
$field = '<p class="form-row ' . implode ( ' ' , $args [ 'class' ] ) . '" id="' . $key . ' _field " >
< label for = " ' . $key . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label >
< select name = " ' . $key . ' " id = " ' . $key . ' " class = " select " >
' . $options . '
</ select >
</ p > ' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
default :
$field = apply_filters ( 'woocommerce_form_field_' . $args [ 'type' ], '' , $key , $args , $value );
2012-02-15 17:57:12 +00:00
break ;
2012-04-25 09:51:20 +00:00
}
2012-02-15 17:57:12 +00:00
2012-04-25 09:51:20 +00:00
if ( $args [ 'return' ] ) return $field ; else echo $field ;
2011-12-21 16:03:45 +00:00
}
2012-03-12 17:23:04 +00:00
}
2012-04-16 13:32:58 +00:00
/**
* Product search forms
*/
2012-04-25 09:51:20 +00:00
function get_product_search_form ( $echo = true ) {
do_action ( 'get_product_search_form' );
2012-04-16 13:32:58 +00:00
2012-04-25 09:51:20 +00:00
$search_form_template = locate_template ( 'product-searchform.php' );
if ( '' != $search_form_template ) {
require $search_form_template ;
2012-04-16 13:32:58 +00:00
return ;
}
2012-04-25 09:51:20 +00:00
$form = '<form role="search" method="get" id="searchform" action="' . esc_url ( home_url ( '/' ) ) . ' " >
2012-04-16 13:32:58 +00:00
< div >
2012-04-25 09:51:20 +00:00
< label class = " screen-reader-text " for = " s " > ' . __( ' Search for : ', ' woocommerce ' ) . ' </ label >
< input type = " text " value = " ' . get_search_query() . ' " name = " s " id = " s " placeholder = " ' . __( 'Search for products', 'woocommerce' ) . ' " />
< input type = " submit " id = " searchsubmit " value = " '. esc_attr__( 'Search' ) .' " />
2012-04-16 13:32:58 +00:00
< input type = " hidden " name = " post_type " value = " product " />
</ div >
</ form > ' ;
2012-04-25 09:51:20 +00:00
if ( $echo )
echo apply_filters ( 'get_product_search_form' , $form );
2012-04-16 13:32:58 +00:00
else
2012-04-25 09:51:20 +00:00
return apply_filters ( 'get_product_search_form' , $form );
2012-04-16 13:32:58 +00:00
}