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-08-14 15:30:23 +00:00
* @ author WooThemes
* @ category Core
2012-08-14 18:05:45 +00:00
* @ package WooCommerce / Templates
2012-08-14 15:30:23 +00:00
* @ version 1.6 . 4
2011-08-10 17:11:11 +00:00
*/
2012-10-15 10:57:58 +00:00
if ( ! defined ( 'ABSPATH' ) ) exit ; // Exit if accessed directly
2012-01-06 14:02:34 +00:00
/** Template pages ********************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_content' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output WooCommerce content .
*
* This function is only used in the optional 'woocommerce.php' template
* which people can add to their themes to add basic woocommerce support
2013-02-10 16:06:15 +00:00
* without hooks or modifying core templates .
2012-08-14 15:30:23 +00:00
*
* @ access public
* @ return void
*/
2012-01-06 14:02:34 +00:00
function woocommerce_content () {
2012-08-08 08:58:36 +00:00
2012-07-11 10:23:31 +00:00
if ( is_singular ( 'product' ) ) {
2012-08-08 08:58:36 +00:00
2012-07-11 10:23:31 +00:00
while ( have_posts () ) : the_post ();
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
woocommerce_get_template_part ( 'content' , 'single-product' );
2012-04-25 09:51:20 +00:00
2012-07-11 10:23:31 +00:00
endwhile ;
2012-04-25 09:51:20 +00:00
2012-07-11 10:23:31 +00:00
} else {
2012-08-08 08:58:36 +00:00
2012-11-04 16:01:40 +00:00
?> <h1 class="page-title"><?php woocommerce_page_title(); ?></h1>
2012-08-08 08:58:36 +00:00
2012-08-09 10:30:37 +00:00
< ? php do_action ( 'woocommerce_archive_description' ); ?>
2012-07-19 17:58:41 +00:00
< ? php if ( have_posts () ) : ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php do_action ( 'woocommerce_before_shop_loop' ); ?>
2012-08-08 08:58:36 +00:00
2012-09-30 13:41:07 +00:00
< ? php woocommerce_product_loop_start (); ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php woocommerce_product_subcategories (); ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php while ( have_posts () ) : the_post (); ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php woocommerce_get_template_part ( 'content' , 'product' ); ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php endwhile ; // end of the loop. ?>
2012-08-08 08:58:36 +00:00
2012-09-30 13:41:07 +00:00
< ? php woocommerce_product_loop_end (); ?>
2012-08-08 08:58:36 +00:00
2012-07-19 17:58:41 +00:00
< ? php do_action ( 'woocommerce_after_shop_loop' ); ?>
2012-08-08 08:58:36 +00:00
2013-02-10 23:01:09 +00:00
< ? php elseif ( ! woocommerce_product_subcategories ( array ( 'before' => woocommerce_product_loop_start ( false ), 'after' => woocommerce_product_loop_end ( false ) ) ) ) : ?>
2012-08-08 08:58:36 +00:00
2013-02-10 23:01:09 +00:00
< ? php woocommerce_get_template ( 'loop/no-products-found.php' ); ?>
2012-08-08 08:58:36 +00:00
2013-02-10 16:06:15 +00:00
< ? php endif ;
2012-08-08 08:58:36 +00:00
2012-07-11 10:23:31 +00:00
}
2012-01-13 14:17:43 +00:00
}
2012-01-06 14:02:34 +00:00
}
2013-02-12 10:54:08 +00:00
if ( ! function_exists ( 'woocommerce_single_product_content' ) ) {
/**
* woocommerce_single_product_content function .
*
* @ access public
* @ return void
* @ deprecated 1.6
*/
function woocommerce_single_product_content () {
_deprecated_function ( __FUNCTION__ , '1.6' );
woocommerce_content ();
}
}
if ( ! function_exists ( 'woocommerce_archive_product_content' ) ) {
/**
* woocommerce_archive_product_content function .
*
* @ access public
* @ return void
* @ deprecated 1.6
*/
function woocommerce_archive_product_content () {
_deprecated_function ( __FUNCTION__ , '1.6' );
woocommerce_content ();
}
}
if ( ! function_exists ( 'woocommerce_product_taxonomy_content' ) ) {
/**
* woocommerce_product_taxonomy_content function .
*
* @ access public
* @ return void
* @ deprecated 1.6
*/
function woocommerce_product_taxonomy_content () {
_deprecated_function ( __FUNCTION__ , '1.6' );
woocommerce_content ();
}
}
2011-12-11 12:39:35 +00:00
/** Global ****************************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_content_wrapper' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the start of the page wrapper .
*
* @ access public
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the end of the page wrapper .
*
* @ access public
* @ return void
*/
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-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_messages' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Show messages on the frontend .
*
* @ access public
* @ return void
*/
2012-02-08 15:20:32 +00:00
function woocommerce_show_messages () {
global $woocommerce ;
2012-04-25 09:51:20 +00:00
2012-08-14 15:30:23 +00:00
if ( $woocommerce -> error_count () > 0 )
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/errors.php' , array (
'errors' => $woocommerce -> get_errors ()
) );
2012-08-14 15:30:23 +00:00
if ( $woocommerce -> message_count () > 0 )
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'shop/messages.php' , array (
'messages' => $woocommerce -> get_messages ()
) );
2012-02-08 15:20:32 +00:00
$woocommerce -> clear_messages ();
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_get_sidebar' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the shop sidebar template .
*
* @ access public
* @ return void
*/
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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_demo_store' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Adds a demo store banner to the site if enabled
*
* @ access public
* @ return void
*/
2011-12-12 12:28:07 +00:00
function woocommerce_demo_store () {
2012-08-10 09:35:25 +00:00
if ( get_option ( 'woocommerce_demo_store' ) == 'no' )
return ;
2012-04-25 09:51:20 +00:00
2012-08-10 09:35:25 +00:00
$notice = get_option ( 'woocommerce_demo_store_notice' );
if ( empty ( $notice ) )
$notice = __ ( 'This is a demo store for testing purposes — no orders shall be fulfilled.' , 'woocommerce' );
echo apply_filters ( 'woocommerce_demo_store' , '<p class="demo_store">' . $notice . '</p>' );
2011-12-12 12:28:07 +00:00
}
}
2011-12-11 01:10:24 +00:00
/** Loop ******************************************************************/
2012-11-04 16:01:40 +00:00
if ( ! function_exists ( 'woocommerce_page_title' ) ) {
/**
* woocommerce_page_title function .
2012-11-27 16:22:47 +00:00
*
2012-11-04 16:01:40 +00:00
* @ access public
* @ return void
*/
function woocommerce_page_title () {
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
if ( is_search () ) {
$page_title = sprintf ( __ ( 'Search Results: “%s”' , 'woocommerce' ), get_search_query () );
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
if ( get_query_var ( 'paged' ) )
$page_title .= sprintf ( __ ( ' – Page %s' , 'woocommerce' ), get_query_var ( 'paged' ) );
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
} elseif ( is_tax () ) {
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
$page_title = single_term_title ( " " , false );
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
} else {
2012-11-27 16:22:47 +00:00
2013-01-03 10:19:52 +00:00
$shop_page_id = woocommerce_get_page_id ( 'shop' );
2012-11-27 16:22:47 +00:00
2013-01-03 10:19:52 +00:00
$page_title = apply_filters ( 'the_title' , ( $shop_page_title = get_option ( 'woocommerce_shop_page_title' ) ) ? $shop_page_title : get_the_title ( $shop_page_id ), $shop_page_id );
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
}
2012-11-27 16:22:47 +00:00
2012-11-04 16:01:40 +00:00
echo apply_filters ( 'woocommerce_page_title' , $page_title );
}
}
2012-09-30 13:41:07 +00:00
if ( ! function_exists ( 'woocommerce_product_loop_start' ) ) {
/**
* Output the start of a product loop . By default this is a UL
*
* @ access public
* @ return void
*/
function woocommerce_product_loop_start ( $echo = true ) {
ob_start ();
woocommerce_get_template ( 'loop/loop-start.php' );
if ( $echo )
echo ob_get_clean ();
2012-11-27 16:22:47 +00:00
else
2012-09-30 13:41:07 +00:00
return ob_get_clean ();
}
}
if ( ! function_exists ( 'woocommerce_product_loop_end' ) ) {
/**
* Output the end of a product loop . By default this is a UL
*
* @ access public
* @ return void
*/
function woocommerce_product_loop_end ( $echo = true ) {
ob_start ();
2013-02-10 16:06:15 +00:00
2012-09-30 13:41:07 +00:00
woocommerce_get_template ( 'loop/loop-end.php' );
2013-02-10 16:06:15 +00:00
2012-09-30 13:41:07 +00:00
if ( $echo )
echo ob_get_clean ();
2012-11-27 16:22:47 +00:00
else
2012-09-30 13:41:07 +00:00
return ob_get_clean ();
}
}
2012-08-09 10:25:34 +00:00
if ( ! function_exists ( 'woocommerce_taxonomy_archive_description' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Show an archive description on taxonomy archives
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Archives
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-08-09 10:25:34 +00:00
function woocommerce_taxonomy_archive_description () {
2013-01-03 11:24:23 +00:00
if ( is_tax ( array ( 'product_cat' , 'product_tag' ) ) && get_query_var ( 'paged' ) == 0 ) {
$description = term_description ();
if ( $description ) {
echo '<div class="term-description">' . wpautop ( wptexturize ( $description ) ) . '</div>' ;
}
2013-01-03 10:19:52 +00:00
}
2012-08-09 10:25:34 +00:00
}
}
if ( ! function_exists ( 'woocommerce_product_archive_description' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Show a shop page description on product archives
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Archives
2012-08-14 15:30:23 +00:00
* @ return void
*/
2013-01-03 10:19:52 +00:00
function woocommerce_product_archive_description () {
if ( is_post_type_archive ( 'product' ) && get_query_var ( 'paged' ) == 0 ) {
2013-01-03 11:24:23 +00:00
$shop_page = get_post ( woocommerce_get_page_id ( 'shop' ) );
$description = apply_filters ( 'the_content' , $shop_page -> post_content );
if ( $description ) {
echo '<div class="page-description">' . $description . '</div>' ;
}
2013-01-03 10:19:52 +00:00
}
2012-08-09 10:25:34 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_loop_add_to_cart' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the add to cart template for the loop .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the product thumbnail for the loop .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the product price for the loop .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
}
}
2013-01-12 10:53:24 +00:00
if ( ! function_exists ( 'woocommerce_template_loop_rating' ) ) {
/**
* Display the average rating in the loop
*
* @ access public
* @ subpackage Loop
* @ return void
*/
function woocommerce_template_loop_rating () {
woocommerce_get_template ( 'loop/rating.php' );
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_loop_sale_flash' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the sale flash for the loop .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
}
}
2012-07-19 21:52:28 +00:00
if ( ! function_exists ( 'woocommerce_reset_loop' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Reset the loop 's index and columns when we' re done outputting a product loop .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-07-19 21:52:28 +00:00
function woocommerce_reset_loop () {
global $woocommerce_loop ;
// Reset loop/columns globals when starting a new loop
$woocommerce_loop [ 'loop' ] = $woocommerce_loop [ 'column' ] = '' ;
}
}
2011-08-10 17:11:11 +00:00
2012-09-30 10:31:23 +00:00
add_filter ( 'loop_end' , 'woocommerce_reset_loop' );
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_get_product_thumbnail' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Get the product thumbnail , or the placeholder if not set .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ param string $size ( default : 'shop_catalog' )
* @ param int $placeholder_width ( default : 0 )
* @ param int $placeholder_height ( default : 0 )
* @ return string
*/
2012-04-25 09:51:20 +00:00
function woocommerce_get_product_thumbnail ( $size = 'shop_catalog' , $placeholder_width = 0 , $placeholder_height = 0 ) {
2012-11-27 15:37:01 +00:00
global $post ;
2011-12-12 11:35:54 +00:00
2012-04-25 09:51:20 +00:00
if ( has_post_thumbnail () )
2012-08-08 08:58:36 +00:00
return get_the_post_thumbnail ( $post -> ID , $size );
elseif ( woocommerce_placeholder_img_src () )
2012-11-27 15:37:01 +00:00
return woocommerce_placeholder_img ( $size );
2011-12-12 11:35:54 +00:00
}
}
2012-10-14 12:06:37 +00:00
if ( ! function_exists ( 'woocommerce_result_count' ) ) {
2012-08-14 15:30:23 +00:00
/**
2012-10-14 12:06:37 +00:00
* Output the result count text ( Showing x - x of x results ) .
2012-08-14 15:30:23 +00:00
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-10-14 12:06:37 +00:00
function woocommerce_result_count () {
woocommerce_get_template ( 'loop/result-count.php' );
2011-12-11 01:10:24 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_catalog_ordering' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product sorting options .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-12-11 01:10:24 +00:00
function woocommerce_catalog_ordering () {
2012-09-07 17:26:13 +00:00
global $woocommerce ;
2012-11-27 16:22:47 +00:00
2013-01-12 10:53:24 +00:00
$orderby = isset ( $_GET [ 'orderby' ] ) ? woocommerce_clean ( $_GET [ 'orderby' ] ) : apply_filters ( 'woocommerce_default_catalog_orderby' , get_option ( 'woocommerce_default_catalog_orderby' ) );
2012-11-27 16:22:47 +00:00
2013-02-10 17:33:13 +00:00
woocommerce_get_template ( 'loop/orderby.php' , array ( 'orderby' => $orderby ) );
2011-12-11 01:10:24 +00:00
}
}
2012-10-14 12:06:37 +00:00
if ( ! function_exists ( 'woocommerce_pagination' ) ) {
/**
* Output the pagination .
*
* @ access public
* @ subpackage Loop
* @ return void
*/
function woocommerce_pagination () {
woocommerce_get_template ( 'loop/pagination.php' );
}
}
2011-12-11 01:08:33 +00:00
/** Single Product ********************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_show_product_images' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product image before the single product summary .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product thumbnails .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product tabs .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product / Tabs
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-08-10 17:11:11 +00:00
function woocommerce_output_product_data_tabs () {
2013-02-11 14:17:57 +00:00
woocommerce_get_template ( 'single-product/tabs/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-08-14 15:30:23 +00:00
/**
* Output the product title .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product price .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product short description ( excerpt ) .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product meta .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product sharing .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the product sale flash .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_template_single_add_to_cart' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Trigger the single product add to cart action .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the simple product add to cart area .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the grouped product add to cart area .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the variable product add to cart area .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
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-08-08 08:58:36 +00:00
2012-07-17 14:09:18 +00:00
// Enqueue variation scripts
wp_enqueue_script ( 'wc-add-to-cart-variation' );
2012-08-08 08:58:36 +00:00
2012-07-17 14:09:18 +00:00
// Load the template
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 ()
2012-08-08 08:58:36 +00:00
) );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_external_add_to_cart' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the external product add to cart area .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-12-11 14:40:25 +00:00
function woocommerce_external_add_to_cart () {
2012-02-26 11:47:49 +00:00
global $product ;
2013-02-13 09:29:00 +00:00
if ( ! $product -> get_product_url () )
return ;
2012-04-25 09:51:20 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/external.php' , array (
2012-11-29 16:48:40 +00:00
'product_url' => $product -> get_product_url (),
'button_text' => $product -> get_button_text ()
2012-04-25 09:51:20 +00:00
) );
2011-11-08 16:15:36 +00:00
}
}
2011-08-10 17:11:11 +00:00
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_quantity_input' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the quantity input for add to cart forms .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-12-11 14:40:25 +00:00
function woocommerce_quantity_input ( $args = array () ) {
2012-11-19 14:05:03 +00:00
global $product ;
2012-11-27 16:22:47 +00:00
2011-12-11 14:40:25 +00:00
$defaults = array (
2012-11-19 14:05:03 +00:00
'input_name' => 'quantity' ,
'input_value' => '1' ,
'max_value' => apply_filters ( 'woocommerce_quantity_input_max' , '' , $product ),
'min_value' => apply_filters ( 'woocommerce_quantity_input_min' , '' , $product ),
'step' => apply_filters ( 'woocommerce_quantity_input_step' , '1' , $product )
2011-12-11 14:40:25 +00:00
);
2012-11-19 14:05:03 +00:00
$args = apply_filters ( 'woocommerce_quantity_input_args' , wp_parse_args ( $args , $defaults ), $product );
2012-04-25 09:51:20 +00:00
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
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_description_tab' ) ) {
2012-08-14 15:30:23 +00:00
/**
2013-02-10 17:33:13 +00:00
* Output the description tab content .
2012-08-14 15:30:23 +00:00
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product / Tabs
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-09-21 16:17:28 +00:00
function woocommerce_product_description_tab () {
2013-02-10 17:33:13 +00:00
woocommerce_get_template ( 'single-product/tabs/description.php' );
2011-08-10 17:11:11 +00:00
}
}
2013-02-10 17:33:13 +00:00
if ( ! function_exists ( 'woocommerce_product_additional_information_tab' ) ) {
2012-08-14 15:30:23 +00:00
/**
2013-02-10 17:33:13 +00:00
* Output the attributes tab content .
2012-08-14 15:30:23 +00:00
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product / Tabs
2012-08-14 15:30:23 +00:00
* @ return void
*/
2013-02-10 17:33:13 +00:00
function woocommerce_product_additional_information_tab () {
woocommerce_get_template ( 'single-product/tabs/additional-information.php' );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_reviews_tab' ) ) {
2012-08-14 15:30:23 +00:00
/**
2013-02-10 17:33:13 +00:00
* Output the reviews tab content .
2012-08-14 15:30:23 +00:00
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product / Tabs
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-09-21 16:17:28 +00:00
function woocommerce_product_reviews_tab () {
2013-02-10 17:33:13 +00:00
woocommerce_get_template ( 'single-product/tabs/reviews.php' );
2011-08-10 17:11:11 +00:00
}
}
2013-02-10 17:33:13 +00:00
if ( ! function_exists ( 'woocommerce_default_product_tabs' ) ) {
2012-08-14 15:30:23 +00:00
/**
2013-02-10 17:33:13 +00:00
* Add default product tabs to product pages .
2012-08-14 15:30:23 +00:00
*
* @ access public
2013-02-10 17:33:13 +00:00
* @ param mixed $tabs
2012-08-14 15:30:23 +00:00
* @ return void
*/
2013-02-10 17:33:13 +00:00
function woocommerce_default_product_tabs ( $tabs = array () ) {
global $product , $post ;
2012-08-14 15:30:23 +00:00
2013-02-10 17:33:13 +00:00
// Description tab - shows product content
if ( $post -> post_content )
$tabs [ 'description' ] = array (
'title' => __ ( 'Description' , 'woocommerce' ),
'priority' => 10 ,
'callback' => 'woocommerce_product_description_tab'
);
2013-03-03 17:07:31 +00:00
// Additional information tab - shows attributes
2013-02-10 17:33:13 +00:00
if ( $product -> has_attributes () || ( get_option ( 'woocommerce_enable_dimension_product_attributes' ) == 'yes' && ( $product -> has_dimensions () || $product -> has_weight () ) ) )
$tabs [ 'additional_information' ] = array (
'title' => __ ( 'Additional Information' , 'woocommerce' ),
'priority' => 20 ,
'callback' => 'woocommerce_product_additional_information_tab'
);
// Reviews tab - shows comments
if ( comments_open () )
$tabs [ 'reviews' ] = array (
'title' => sprintf ( __ ( 'Reviews (%d)' , 'woocommerce' ), get_comments_number ( $post -> ID ) ),
'priority' => 30 ,
'callback' => 'comments_template'
);
return $tabs ;
2011-08-10 17:11:11 +00:00
}
}
2013-02-10 17:33:13 +00:00
if ( ! function_exists ( 'woocommerce_sort_product_tabs' ) ) {
2012-08-14 15:30:23 +00:00
/**
2013-02-10 17:33:13 +00:00
* Sort tabs by priority
2012-08-14 15:30:23 +00:00
*
* @ access public
* @ return void
*/
2013-02-10 17:33:13 +00:00
function woocommerce_sort_product_tabs ( $tabs = array () ) {
// Re-order tabs by priority
if ( ! function_exists ( '_sort_priority_callback' ) ) {
function _sort_priority_callback ( $a , $b ) {
if ( $a [ 'priority' ] == $b [ 'priority' ] )
return 0 ;
return ( $a [ 'priority' ] < $b [ 'priority' ] ) ? - 1 : 1 ;
}
}
uasort ( $tabs , '_sort_priority_callback' );
return $tabs ;
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_comments' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the Review comments template .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-04-25 09:51:20 +00:00
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
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_output_related_products' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the related products .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Product
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-08-10 17:11:11 +00:00
function woocommerce_output_related_products () {
2012-09-21 15:47:57 +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' ) ) {
2012-11-27 16:22:47 +00:00
2012-08-14 15:30:23 +00:00
/**
* Output the related products .
2012-11-27 16:22:47 +00:00
*
2012-08-14 15:30:23 +00:00
* @ access public
2012-09-21 15:47:57 +00:00
* @ param int $posts_per_page ( default : 2 )
* @ param int $columns ( default : 2 )
* @ param string $orderby ( default : 'rand' )
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-09-21 15:47:57 +00:00
function woocommerce_related_products ( $posts_per_page = 2 , $columns = 2 , $orderby = 'rand' ) {
2012-04-25 09:51:20 +00:00
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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_upsell_display' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output product up sells .
2012-11-27 16:22:47 +00:00
*
2012-08-14 15:30:23 +00:00
* @ access public
2012-09-21 15:47:57 +00:00
* @ param int $posts_per_page ( default : - 1 )
* @ param int $columns ( default : 2 )
* @ param string $orderby ( default : 'rand' )
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-09-21 15:47:57 +00:00
function woocommerce_upsell_display ( $posts_per_page = '-1' , $columns = 2 , $orderby = 'rand' ) {
woocommerce_get_template ( 'single-product/up-sells.php' , array (
'posts_per_page' => $posts_per_page ,
'orderby' => $orderby ,
'columns' => $columns
) );
2011-12-12 12:28:07 +00:00
}
}
2011-12-11 14:40:25 +00:00
/** Cart ******************************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_shipping_calculator' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the cart shipping calculator .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Cart
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_cart_totals' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the cart totals .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Cart
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_cross_sell_display' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the cart cross - sells .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Cart
2012-08-14 15:30:23 +00:00
* @ return void
*/
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
}
}
2012-07-25 17:59:12 +00:00
/** Mini-Cart *************************************************************/
if ( ! function_exists ( 'woocommerce_mini_cart' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the Mini - cart - used by cart widget
*
* @ access public
* @ return void
*/
2012-07-25 17:59:12 +00:00
function woocommerce_mini_cart ( $args = array () ) {
2012-08-08 08:58:36 +00:00
2012-07-25 17:59:12 +00:00
$defaults = array (
'list_class' => ''
);
$args = wp_parse_args ( $args , $defaults );
2012-08-08 08:58:36 +00:00
2012-07-25 17:59:12 +00:00
woocommerce_get_template ( 'cart/mini-cart.php' , $args );
}
}
2011-12-11 14:40:25 +00:00
/** Login *****************************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_login_form' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the WooCommerce Login Form
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Forms
2012-08-14 15:30:23 +00:00
* @ return void
*/
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 (
2013-02-25 10:17:16 +00:00
'message' => '' ,
'redirect' => '' ,
'hidden' => false
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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_checkout_login_form' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the WooCommerce Checkout Login Form
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Checkout
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-08-10 17:11:11 +00:00
function woocommerce_checkout_login_form () {
2012-12-10 12:34:55 +00:00
global $woocommerce ;
woocommerce_get_template ( 'checkout/form-login.php' , array ( 'checkout' => $woocommerce -> checkout () ) );
2011-08-10 17:11:11 +00:00
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_breadcrumb' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the WooCommerce Breadcrumb
*
* @ access public
* @ return void
*/
2011-12-12 11:35:54 +00:00
function woocommerce_breadcrumb ( $args = array () ) {
2012-04-25 09:51:20 +00:00
2012-12-28 16:06:56 +00:00
$defaults = apply_filters ( 'woocommerce_breadcrumb_defaults' , array (
2013-01-03 11:57:33 +00:00
'delimiter' => ' / ' ,
2013-01-03 11:54:07 +00:00
'wrap_before' => '<nav class="woocommerce-breadcrumb" itemprop="breadcrumb">' ,
'wrap_after' => '</nav>' ,
2012-12-28 16:06:56 +00:00
'before' => '' ,
'after' => '' ,
2012-12-28 16:11:04 +00:00
'home' => _x ( 'Home' , 'breadcrumb' , 'woocommerce' ),
2012-12-28 16:06:56 +00:00
) );
2011-11-24 00:24:24 +00:00
2012-12-28 16:06:56 +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
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_order_review' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the Order review table for the checkout .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Checkout
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-12-11 15:40:17 +00:00
function woocommerce_order_review () {
2012-12-10 12:34:55 +00:00
global $woocommerce ;
woocommerce_get_template ( 'checkout/review-order.php' , array ( 'checkout' => $woocommerce -> checkout () ) );
2011-12-11 15:40:17 +00:00
}
2011-09-04 00:02:44 +00:00
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_checkout_coupon_form' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Output the Coupon form for the checkout .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Checkout
2012-08-14 15:30:23 +00:00
* @ return void
*/
2011-12-19 17:10:53 +00:00
function woocommerce_checkout_coupon_form () {
2012-12-10 12:34:55 +00:00
global $woocommerce ;
woocommerce_get_template ( 'checkout/form-coupon.php' , array ( 'checkout' => $woocommerce -> checkout () ) );
2011-12-19 17:10:53 +00:00
}
}
2012-10-14 12:06:37 +00:00
if ( ! function_exists ( 'woocommerce_products_will_display' ) ) {
/**
* Check if we will be showing products or not ( and not subcats only )
*
* @ access public
* @ subpackage Loop
* @ return void
*/
function woocommerce_products_will_display () {
global $woocommerce , $wpdb ;
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
if ( ! is_product_category () && ! is_shop () )
return false ;
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
if ( is_search () || is_filtered () || is_paged () )
return true ;
2012-11-27 16:22:47 +00:00
2012-11-08 18:05:18 +00:00
if ( is_shop () && get_option ( 'woocommerce_shop_page_display' ) != 'subcategories' )
2012-10-14 12:06:37 +00:00
return true ;
2012-11-27 16:22:47 +00:00
2012-11-08 18:05:18 +00:00
$term = get_queried_object ();
2012-11-27 16:22:47 +00:00
if ( is_product_category () ) {
2012-11-08 18:05:18 +00:00
switch ( get_woocommerce_term_meta ( $term -> term_id , 'display_type' , true ) ) {
case 'products' :
case 'both' :
return true ;
break ;
case '' :
if ( get_option ( 'woocommerce_category_archive_display' ) != 'subcategories' )
return true ;
break ;
}
}
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
$parent_id = empty ( $term -> term_id ) ? 0 : $term -> term_id ;
$has_children = $wpdb -> get_col ( $wpdb -> prepare ( " SELECT term_id FROM { $wpdb -> term_taxonomy } WHERE parent = %d " , $parent_id ) );
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
if ( $has_children ) {
// Check terms have products inside
$children = array ();
foreach ( $has_children as $term ) {
$children = array_merge ( $children , get_term_children ( $term , 'product_cat' ) );
$children [] = $term ;
}
$objects = get_objects_in_term ( $children , 'product_cat' );
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
if ( sizeof ( $objects ) > 0 ) {
return false ;
} else {
return true ;
}
} else {
return true ;
}
}
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_product_subcategories' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Display product sub categories as thumbnails .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-07-11 12:50:24 +00:00
function woocommerce_product_subcategories ( $args = array () ) {
2012-10-14 12:06:37 +00:00
global $woocommerce , $wp_query ;
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
$defaults = array (
'before' => '' ,
2012-07-19 18:34:49 +00:00
'after' => '' ,
'force_display' => false
2012-07-11 12:50:24 +00:00
);
2012-04-25 09:51:20 +00:00
2012-07-11 12:50:24 +00:00
$args = wp_parse_args ( $args , $defaults );
2012-08-08 08:58:36 +00:00
2012-07-11 14:13:06 +00:00
extract ( $args );
2012-08-08 08:58:36 +00:00
2012-07-19 18:34:49 +00:00
// Main query only
if ( ! is_main_query () && ! $force_display ) return ;
2012-08-08 08:58:36 +00:00
2012-10-14 12:06:37 +00:00
// Don't show when filtering, searching or when on page > 1 and ensure we're on a product archive
if ( is_search () || is_filtered () || is_paged () || ( ! is_product_category () && ! is_shop () ) ) return ;
2012-11-27 16:22:47 +00:00
2012-10-14 12:06:37 +00:00
// Check categories are enabled
2012-11-08 18:05:18 +00:00
if ( is_shop () && get_option ( 'woocommerce_shop_page_display' ) == '' ) return ;
2012-11-27 16:22:47 +00:00
2012-07-11 12:50:24 +00:00
// Find the category + category parent, if applicable
2012-10-14 12:06:37 +00:00
$term = get_queried_object ();
$parent_id = empty ( $term -> term_id ) ? 0 : $term -> term_id ;
2012-11-27 16:22:47 +00:00
2012-11-08 18:05:18 +00:00
if ( is_product_category () ) {
$display_type = get_woocommerce_term_meta ( $term -> term_id , 'display_type' , true );
2012-11-27 16:22:47 +00:00
2012-11-08 18:05:18 +00:00
switch ( $display_type ) {
case 'products' :
return ;
break ;
case '' :
if ( get_option ( 'woocommerce_category_archive_display' ) == '' )
return ;
break ;
}
}
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-10-14 12:06:37 +00:00
'child_of' => $parent_id ,
2012-07-11 12:50:24 +00:00
'menu_order' => 'ASC' ,
'hide_empty' => 1 ,
'hierarchical' => 1 ,
'taxonomy' => 'product_cat' ,
'pad_counts' => 1
2012-04-25 09:51:20 +00:00
);
2013-01-10 12:56:04 +00:00
$product_categories = get_categories ( apply_filters ( 'woocommerce_product_subcategories_args' , $args ) );
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
$product_category_found = false ;
2012-04-25 09:51:20 +00:00
if ( $product_categories ) {
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
foreach ( $product_categories as $category ) {
2012-08-08 08:58:36 +00:00
2012-10-14 12:06:37 +00:00
if ( $category -> parent != $parent_id )
2012-07-11 12:50:24 +00:00
continue ;
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
if ( ! $product_category_found ) {
// We found a category
$product_category_found = true ;
2013-01-31 15:23:37 +00:00
echo $before ;
2012-07-11 12:50:24 +00:00
}
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
woocommerce_get_template ( 'content-product_cat.php' , array (
'category' => $category
2012-04-25 09:51:20 +00:00
) );
2012-08-08 08:58:36 +00:00
2012-04-25 09:51:20 +00:00
}
}
2012-08-08 08:58:36 +00:00
2012-07-11 12:50:24 +00:00
// If we are hiding products disable the loop and pagination
if ( $product_category_found ) {
2012-11-08 18:05:18 +00:00
if ( is_product_category () ) {
$display_type = get_woocommerce_term_meta ( $term -> term_id , 'display_type' , true );
2012-11-27 16:22:47 +00:00
2012-11-08 18:05:18 +00:00
switch ( $display_type ) {
case 'subcategories' :
$wp_query -> post_count = 0 ;
$wp_query -> max_num_pages = 0 ;
break ;
case '' :
if ( get_option ( 'woocommerce_category_archive_display' ) == 'subcategories' ) {
$wp_query -> post_count = 0 ;
$wp_query -> max_num_pages = 0 ;
}
break ;
}
}
if ( is_shop () && get_option ( 'woocommerce_shop_page_display' ) == 'subcategories' ) {
$wp_query -> post_count = 0 ;
$wp_query -> max_num_pages = 0 ;
}
2012-11-27 16:22:47 +00:00
2013-01-31 15:23:37 +00:00
echo $after ;
2012-07-11 12:50:24 +00:00
return true ;
}
2012-08-08 08:58:36 +00:00
2011-12-11 15:40:17 +00:00
}
2011-10-07 19:27:10 +00:00
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_subcategory_thumbnail' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Show subcategory thumbnails .
*
* @ access public
* @ param mixed $category
2012-08-15 18:15:06 +00:00
* @ subpackage Loop
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-11-27 15:37:01 +00:00
function woocommerce_subcategory_thumbnail ( $category ) {
2011-12-11 15:40:17 +00:00
global $woocommerce ;
2012-04-25 09:51:20 +00:00
2012-11-27 15:37:01 +00:00
$small_thumbnail_size = apply_filters ( 'single_product_small_thumbnail_size' , 'shop_catalog' );
$dimensions = $woocommerce -> get_image_size ( $small_thumbnail_size );
$thumbnail_id = get_woocommerce_term_meta ( $category -> term_id , 'thumbnail_id' , true );
2012-04-25 09:51:20 +00:00
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
}
2012-08-08 08:58:36 +00:00
if ( $image )
2012-11-27 15:37:01 +00:00
echo '<img src="' . $image . '" alt="' . $category -> name . '" width="' . $dimensions [ 'width' ] . '" height="' . $dimensions [ 'height' ] . '" />' ;
2011-12-11 15:40:17 +00:00
}
2011-10-07 19:27:10 +00:00
}
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_order_details_table' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Displays order details in a table .
*
* @ access public
* @ param mixed $order_id
2012-08-15 18:15:06 +00:00
* @ subpackage Orders
2012-08-14 15:30:23 +00:00
* @ return void
*/
2012-04-25 09:51:20 +00:00
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 ****************************************************************/
2012-04-25 09:51:20 +00:00
if ( ! function_exists ( 'woocommerce_form_field' ) ) {
2012-08-14 15:30:23 +00:00
/**
* Outputs a checkout / address form field .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Forms
2012-08-14 15:30:23 +00:00
* @ param mixed $key
* @ param mixed $args
2013-03-10 13:17:15 +00:00
* @ param string $value ( default : null )
2012-08-14 15:30:23 +00:00
* @ return void
*/
2013-03-10 13:17:15 +00:00
function woocommerce_form_field ( $key , $args , $value = null ) {
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 (
2012-12-10 14:50:49 +00:00
'type' => 'text' ,
'label' => '' ,
'placeholder' => '' ,
'maxlength' => false ,
'required' => false ,
'class' => array (),
'label_class' => array (),
'return' => false ,
'options' => array (),
'custom_attributes' => array (),
2013-03-03 14:51:25 +00:00
'validate' => array (),
2013-03-10 13:17:15 +00:00
'default' => '' ,
2011-12-21 16:03:45 +00:00
);
2012-04-25 09:51:20 +00:00
$args = wp_parse_args ( $args , $defaults );
2012-11-19 15:05:23 +00:00
if ( ( ! empty ( $args [ 'clear' ] ) ) ) $after = '<div class="clear"></div>' ; else $after = '' ;
2012-04-25 09:51:20 +00:00
2012-12-10 14:50:49 +00:00
if ( $args [ 'required' ] ) {
$args [ 'class' ][] = 'validate-required' ;
$required = ' <abbr class="required" title="' . esc_attr__ ( 'required' , 'woocommerce' ) . '">*</abbr>' ;
} else {
$required = '' ;
}
2012-09-10 22:06:44 +00:00
$args [ 'maxlength' ] = ( $args [ 'maxlength' ] ) ? 'maxlength="' . absint ( $args [ 'maxlength' ] ) . '"' : '' ;
2012-11-27 16:22:47 +00:00
2013-03-10 13:17:15 +00:00
if ( is_null ( $value ) )
$value = $args [ 'default' ];
2013-03-03 14:51:25 +00:00
2012-11-19 15:05:23 +00:00
// Custom attribute handling
$custom_attributes = array ();
2012-11-27 16:22:47 +00:00
2012-11-19 15:05:23 +00:00
if ( ! empty ( $args [ 'custom_attributes' ] ) && is_array ( $args [ 'custom_attributes' ] ) )
2013-02-26 11:51:12 +00:00
foreach ( $args [ 'custom_attributes' ] as $attribute => $attribute_value )
$custom_attributes [] = esc_attr ( $attribute ) . '="' . esc_attr ( $attribute_value ) . '"' ;
2012-11-27 16:22:47 +00:00
2012-12-10 14:50:49 +00:00
if ( ! empty ( $args [ 'validate' ] ) )
foreach ( $args [ 'validate' ] as $validate )
$args [ 'class' ][] = 'validate-' . $validate ;
2012-04-25 09:51:20 +00:00
switch ( $args [ 'type' ] ) {
case " country " :
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
if ( sizeof ( $woocommerce -> countries -> get_allowed_countries () ) == 1 ) {
2012-11-27 16:22:47 +00:00
2013-01-03 12:34:31 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
if ( $args [ 'label' ] )
$field .= '<label class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . '</label>' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
$field .= '<strong>' . current ( array_values ( $woocommerce -> countries -> get_allowed_countries () ) ) . '</strong>' ;
2012-11-27 16:22:47 +00:00
2012-11-19 15:05:23 +00:00
$field .= '<input type="hidden" name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" value="' . current ( array_keys ( $woocommerce -> countries -> get_allowed_countries () ) ) . '" ' . implode ( ' ' , $custom_attributes ) . ' />' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
$field .= '</p>' . $after ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
} else {
2012-04-25 09:51:20 +00:00
2012-11-06 12:43:17 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . ' _field " >
< label for = " ' . esc_attr( $key ) . ' " class = " ' . implode( ' ', $args['label_class'] ) .' " > ' . $args[' label ']. $required . ' </ label >
2012-11-19 15:05:23 +00:00
< select name = " ' . esc_attr( $key ) . ' " id = " ' . esc_attr( $key ) . ' " class = " country_to_state country_select " ' . implode( ' ', $custom_attributes ) . ' >
2012-11-06 12:43:17 +00:00
< option value = " " > '.__( ' Select a country & hellip ; ', ' woocommerce ' ) .' </ option > ' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
foreach ( $woocommerce -> countries -> get_allowed_countries () as $ckey => $cvalue )
$field .= '<option value="' . $ckey . '" ' . selected ( $value , $ckey , false ) . '>' . __ ( $cvalue , 'woocommerce' ) . '</option>' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
$field .= '</select>' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
$field .= '<noscript><input type="submit" name="woocommerce_checkout_update_totals" value="' . __ ( 'Update country' , 'woocommerce' ) . '" /></noscript>' ;
2012-11-27 16:22:47 +00:00
2012-11-06 12:43:17 +00:00
$field .= '</p>' . $after ;
2012-11-27 16:22:47 +00:00
2012-04-25 09:51:20 +00:00
}
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " state " :
/* Get Country */
2012-07-16 19:21:44 +00:00
$country_key = $key == 'billing_state' ? 'billing_country' : 'shipping_country' ;
2012-04-25 09:51:20 +00:00
2012-07-16 19:21:44 +00:00
if ( isset ( $_POST [ $country_key ] ) ) {
$current_cc = woocommerce_clean ( $_POST [ $country_key ] );
2012-04-25 09:51:20 +00:00
} elseif ( is_user_logged_in () ) {
2012-07-16 19:21:44 +00:00
$current_cc = get_user_meta ( get_current_user_id () , $country_key , true );
2013-02-06 23:57:57 +00:00
if ( ! $current_cc ) {
$current_cc = apply_filters ( 'default_checkout_country' , ( $woocommerce -> customer -> get_country ()) ? $woocommerce -> customer -> get_country () : $woocommerce -> countries -> get_base_country ());
}
2012-07-16 19:21:44 +00:00
} elseif ( $country_key == 'billing_country' ) {
$current_cc = apply_filters ( 'default_checkout_country' , ( $woocommerce -> customer -> get_country ()) ? $woocommerce -> customer -> get_country () : $woocommerce -> countries -> get_base_country ());
2012-04-25 09:51:20 +00:00
} else {
2013-02-06 23:57:57 +00:00
$current_cc = apply_filters ( 'default_checkout_country' , ( $woocommerce -> customer -> get_shipping_country ()) ? $woocommerce -> customer -> get_shipping_country () : $woocommerce -> countries -> get_base_country ());
2012-04-25 09:51:20 +00:00
}
2012-08-08 08:58:36 +00:00
2012-07-16 19:21:44 +00:00
$states = $woocommerce -> countries -> get_states ( $current_cc );
2012-04-25 09:51:20 +00:00
2012-07-18 19:07:32 +00:00
if ( is_array ( $states ) && empty ( $states ) ) {
2012-08-08 08:58:36 +00:00
2012-10-16 13:46:23 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field" style="display: none">' ;
2013-01-03 12:34:31 +00:00
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
2013-01-20 12:47:03 +00:00
$field .= '<input type="hidden" class="hidden" name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" value="" ' . implode ( ' ' , $custom_attributes ) . ' placeholder="' . $args [ 'placeholder' ] . '" />' ;
2012-07-18 19:07:32 +00:00
$field .= '</p>' . $after ;
2012-08-08 08:58:36 +00:00
2012-07-18 19:07:32 +00:00
} elseif ( is_array ( $states ) ) {
2012-08-08 08:58:36 +00:00
2012-10-16 13:46:23 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
2013-01-03 12:34:31 +00:00
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
2013-01-20 12:47:03 +00:00
$field .= '<select name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" class="state_select" ' . implode ( ' ' , $custom_attributes ) . ' placeholder="' . $args [ 'placeholder' ] . ' " >
2012-07-18 19:07:32 +00:00
< option value = " " > '.__( ' Select a state & hellip ; ', ' woocommerce ' ) .' </ option > ' ;
2012-08-08 08:58:36 +00:00
2012-07-18 19:07:32 +00:00
foreach ( $states as $ckey => $cvalue )
2012-04-25 09:51:20 +00:00
$field .= '<option value="' . $ckey . '" ' . selected ( $value , $ckey , false ) . '>' . __ ( $cvalue , 'woocommerce' ) . '</option>' ;
2012-08-08 08:58:36 +00:00
2012-04-25 09:51:20 +00:00
$field .= '</select>' ;
2012-07-18 19:07:32 +00:00
$field .= '</p>' . $after ;
2012-08-08 08:58:36 +00:00
2012-04-25 09:51:20 +00:00
} else {
2012-08-08 08:58:36 +00:00
2012-10-16 13:46:23 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
2013-01-03 12:34:31 +00:00
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
2012-11-19 15:05:23 +00:00
$field .= '<input type="text" class="input-text" value="' . $value . '" placeholder="' . $args [ 'placeholder' ] . '" name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" ' . implode ( ' ' , $custom_attributes ) . ' />' ;
2012-07-18 19:07:32 +00:00
$field .= '</p>' . $after ;
2012-08-08 08:58:36 +00:00
2012-04-25 09:51:20 +00:00
}
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " textarea " :
2013-01-03 12:34:31 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
$field .= '<textarea name="' . esc_attr ( $key ) . '" class="input-text" id="' . esc_attr ( $key ) . '" placeholder="' . $args [ 'placeholder' ] . '" cols="5" rows="2" ' . implode ( ' ' , $custom_attributes ) . '>' . esc_textarea ( $value ) . ' </ textarea >
2012-04-25 09:51:20 +00:00
</ p > ' . $after ;
break ;
case " checkbox " :
2012-10-16 13:46:23 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . ' _field " >
< input type = " ' . $args['type'] . ' " class = " input-checkbox " name = " ' . esc_attr( $key ) . ' " id = " ' . esc_attr( $key ) . ' " value = " 1 " '.checked( $value, 1, false ) .' />
2012-11-19 15:05:23 +00:00
< label for = " ' . esc_attr( $key ) . ' " class = " checkbox ' . implode( ' ', $args['label_class'] ) .' " ' . implode( ' ', $custom_attributes ) . ' > ' . $args[' label '] . $required . ' </ label >
2012-04-25 09:51:20 +00:00
</ p > ' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " password " :
2013-01-03 12:34:31 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
$field .= '<input type="password" class="input-text" name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" placeholder="' . $args [ 'placeholder' ] . '" value="' . esc_attr ( $value ) . '" ' . implode ( ' ' , $custom_attributes ) . ' />
2012-04-25 09:51:20 +00:00
</ p > ' . $after ;
2011-12-22 01:02:42 +00:00
break ;
2012-04-25 09:51:20 +00:00
case " text " :
2013-01-03 12:34:31 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
$field .= '<input type="text" class="input-text" name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" placeholder="' . $args [ 'placeholder' ] . '" ' . $args [ 'maxlength' ] . ' value="' . esc_attr ( $value ) . '" ' . implode ( ' ' , $custom_attributes ) . ' />
2012-04-25 09:51:20 +00:00
</ 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 )
2012-10-16 13:46:23 +00:00
$options .= '<option value="' . esc_attr ( $option_key ) . '" ' . selected ( $value , $option_key , false ) . '>' . esc_attr ( $option_text ) . '</option>' ;
2012-04-25 09:51:20 +00:00
2013-01-03 12:34:31 +00:00
$field = '<p class="form-row ' . esc_attr ( implode ( ' ' , $args [ 'class' ] ) ) . '" id="' . esc_attr ( $key ) . '_field">' ;
if ( $args [ 'label' ] )
$field .= '<label for="' . esc_attr ( $key ) . '" class="' . implode ( ' ' , $args [ 'label_class' ] ) . '">' . $args [ 'label' ] . $required . '</label>' ;
$field .= '<select name="' . esc_attr ( $key ) . '" id="' . esc_attr ( $key ) . '" class="select" ' . implode ( ' ' , $custom_attributes ) . ' >
2012-04-25 09:51:20 +00:00
' . $options . '
</ select >
</ p > ' . $after ;
2011-12-21 16:03:45 +00:00
break ;
2012-04-25 09:51:20 +00:00
default :
2012-11-19 15:05:23 +00:00
$field = apply_filters ( 'woocommerce_form_field_' . $args [ 'type' ], '' , $key , $args , $value );
2012-04-25 09:51:20 +00:00
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
2012-08-14 15:30:23 +00:00
if ( ! function_exists ( 'get_product_search_form' ) ) {
/**
* Output Product search forms .
*
* @ access public
2012-08-15 18:15:06 +00:00
* @ subpackage Forms
2012-08-14 15:30:23 +00:00
* @ param bool $echo ( default : true )
* @ return void
*/
function get_product_search_form ( $echo = true ) {
do_action ( 'get_product_search_form' );
$search_form_template = locate_template ( 'product-searchform.php' );
if ( '' != $search_form_template ) {
require $search_form_template ;
return ;
}
2012-04-16 13:32:58 +00:00
2012-08-14 15:30:23 +00:00
$form = '<form role="search" method="get" id="searchform" action="' . esc_url ( home_url ( '/' ) ) . ' " >
< div >
< 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' ) . ' " />
2012-11-03 09:31:14 +00:00
< input type = " submit " id = " searchsubmit " value = " '. esc_attr__( 'Search', 'woocommerce' ) .' " />
2012-08-14 15:30:23 +00:00
< input type = " hidden " name = " post_type " value = " product " />
</ div >
</ form > ' ;
if ( $echo )
echo apply_filters ( 'get_product_search_form' , $form );
else
return apply_filters ( 'get_product_search_form' , $form );
2012-04-16 13:32:58 +00:00
}
2013-02-06 23:57:57 +00:00
}