2011-08-10 17:11:11 +00:00
< ? php
/**
* WooCommerce Template Functions
2011-11-24 00:24:24 +00:00
*
2011-08-16 14:06:08 +00:00
* Functions used in the template files to output content - in most cases hooked in via the template actions .
2011-08-10 17:11:11 +00:00
*
* @ package WooCommerce
* @ category Core
* @ author WooThemes
*/
/**
* Content Wrappers
**/
if ( ! function_exists ( 'woocommerce_output_content_wrapper' )) {
2011-11-24 00:24:24 +00:00
function woocommerce_output_content_wrapper () {
2011-09-06 11:54:07 +00:00
if ( get_option ( 'template' ) === 'twentyeleven' ) :
echo '<div id="primary"><div id="content" role="main">' ;
else :
2011-11-24 00:24:24 +00:00
echo '<div id="container"><div id="content" role="main">' ;
2011-09-06 11:54:07 +00:00
endif ;
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_output_content_wrapper_end' )) {
2011-11-24 00:24:24 +00:00
function woocommerce_output_content_wrapper_end () {
2011-12-09 20:16:34 +00:00
echo '</div></div>' ;
2011-08-10 17:11:11 +00:00
}
}
2011-12-08 14:53:14 +00:00
/**
* Compatibility ( for globals )
*
* Genisis shows products via an action , so ensure the $_product variable is set
**/
function woocommerce_before_single_product ( $post , $product ) {
global $_product ;
if ( is_null ( $_product )) $_product = $product ;
}
2011-08-10 17:11:11 +00:00
/**
* Sale Flash
**/
if ( ! function_exists ( 'woocommerce_show_product_sale_flash' )) {
function woocommerce_show_product_sale_flash ( $post , $_product ) {
2011-09-09 10:54:46 +00:00
if ( $_product -> is_on_sale ()) echo apply_filters ( 'woocommerce_sale_flash' , '<span class="onsale">' . __ ( 'Sale!' , 'woothemes' ) . '</span>' , $post , $_product );
2011-08-10 17:11:11 +00:00
}
}
/**
* Sidebar
**/
if ( ! function_exists ( 'woocommerce_get_sidebar' )) {
2011-11-24 00:24:24 +00:00
function woocommerce_get_sidebar () {
get_sidebar ( 'shop' );
2011-08-10 17:11:11 +00:00
}
}
/**
* Products Loop
**/
if ( ! function_exists ( 'woocommerce_template_loop_add_to_cart' )) {
2011-08-27 20:07:16 +00:00
function woocommerce_template_loop_add_to_cart ( $post , $_product ) {
2011-11-24 00:24:24 +00:00
2011-08-27 20:07:16 +00:00
// No price set - so no button
2011-11-08 16:15:36 +00:00
if ( $_product -> get_price () === '' && $_product -> product_type !== 'external' ) return ;
2011-11-24 00:24:24 +00:00
2011-09-15 10:00:39 +00:00
if ( ! $_product -> is_in_stock ()) :
2011-11-19 13:29:10 +00:00
echo '<a href="' . get_permalink ( $post -> ID ) . '" class="button">' . apply_filters ( 'out_of_stock_add_to_cart_text' , __ ( 'Read More' , 'woothemes' )) . '</a>' ;
2011-09-15 10:00:39 +00:00
return ;
endif ;
2011-11-24 00:24:24 +00:00
2011-10-12 10:52:49 +00:00
switch ( $_product -> product_type ) :
case " variable " :
$link = get_permalink ( $post -> ID );
$label = apply_filters ( 'variable_add_to_cart_text' , __ ( 'Select options' , 'woothemes' ));
break ;
case " grouped " :
$link = get_permalink ( $post -> ID );
$label = apply_filters ( 'grouped_add_to_cart_text' , __ ( 'View options' , 'woothemes' ));
break ;
2011-11-08 16:15:36 +00:00
case " external " :
$link = get_permalink ( $post -> ID );
$label = apply_filters ( 'external_add_to_cart_text' , __ ( 'Read More' , 'woothemes' ));
break ;
2011-10-12 10:52:49 +00:00
default :
$link = esc_url ( $_product -> add_to_cart_url () );
$label = apply_filters ( 'add_to_cart_text' , __ ( 'Add to cart' , 'woothemes' ));
break ;
endswitch ;
2011-11-24 00:24:24 +00:00
2011-11-16 17:55:22 +00:00
echo sprintf ( '<a href="%s" data-product_id="%s" class="button add_to_cart_button product_type_%s">%s</a>' , $link , $_product -> id , $_product -> product_type , $label );
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_template_loop_product_thumbnail' )) {
function woocommerce_template_loop_product_thumbnail ( $post , $_product ) {
echo woocommerce_get_product_thumbnail ();
}
}
if ( ! function_exists ( 'woocommerce_template_loop_price' )) {
function woocommerce_template_loop_price ( $post , $_product ) {
2011-11-14 11:18:47 +00:00
$price_html = $_product -> get_price_html ();
if ( ! $price_html ) return ;
?> <span class="price"><?php echo $price_html; ?></span><?php
2011-08-10 17:11:11 +00:00
}
}
/**
* Check product visibility in loop
**/
if ( ! function_exists ( 'woocommerce_check_product_visibility' )) {
function woocommerce_check_product_visibility ( $post , $_product ) {
2011-11-24 15:32:57 +00:00
if ( ! $_product -> is_visible ( true ) && $post -> post_parent > 0 ) : wp_safe_redirect ( get_permalink ( $post -> post_parent )); exit ; endif ;
if ( ! $_product -> is_visible ( true )) : wp_safe_redirect ( home_url ()); exit ; endif ;
2011-08-10 17:11:11 +00:00
}
}
/**
* Before Single Products Summary Div
**/
if ( ! function_exists ( 'woocommerce_show_product_images' )) {
function woocommerce_show_product_images () {
2011-11-24 00:24:24 +00:00
2011-12-08 14:53:14 +00:00
global $post , $woocommerce ;
2011-08-10 17:11:11 +00:00
echo '<div class="images">' ;
if ( has_post_thumbnail ()) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$thumb_id = get_post_thumbnail_id ();
2011-08-27 19:20:28 +00:00
$large_thumbnail_size = apply_filters ( 'single_product_large_thumbnail_size' , 'shop_single' );
2011-11-24 00:24:24 +00:00
2011-11-19 02:25:15 +00:00
echo '<a itemprop="image" href="' . wp_get_attachment_url ( $thumb_id ) . '" class="zoom" rel="thumbnails">' . get_the_post_thumbnail ( $post -> ID , $large_thumbnail_size ) . '</a>' ;
2011-11-24 00:24:24 +00:00
else :
echo '<img src="' . $woocommerce -> plugin_url () . '/assets/images/placeholder.png" alt="Placeholder" />' ;
endif ;
2011-08-10 17:11:11 +00:00
do_action ( 'woocommerce_product_thumbnails' );
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo '</div>' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_show_product_thumbnails' )) {
function woocommerce_show_product_thumbnails () {
2011-11-24 00:24:24 +00:00
2011-12-08 14:53:14 +00:00
global $post ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo '<div class="thumbnails">' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$thumb_id = get_post_thumbnail_id ();
$small_thumbnail_size = apply_filters ( 'single_product_small_thumbnail_size' , 'shop_thumbnail' );
2011-11-24 00:24:24 +00:00
$args = array (
'post_type' => 'attachment' ,
'numberposts' => - 1 ,
'post_status' => null ,
2011-10-02 11:13:37 +00:00
'post_parent' => $post -> ID ,
'post__not_in' => array ( $thumb_id ),
2011-10-08 18:59:20 +00:00
'post_mime_type' => 'image' ,
2011-10-02 11:13:37 +00:00
'meta_query' => array (
array (
'key' => '_woocommerce_exclude_image' ,
'value' => '1' ,
'compare' => '!='
)
)
2011-11-24 00:24:24 +00:00
);
2011-08-10 17:11:11 +00:00
$attachments = get_posts ( $args );
if ( $attachments ) :
$loop = 0 ;
2011-10-26 16:19:17 +00:00
$columns = apply_filters ( 'woocommerce_product_thumbnails_columns' , 3 );
2011-11-24 00:24:24 +00:00
foreach ( $attachments as $attachment ) :
2011-08-10 17:11:11 +00:00
$loop ++ ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$_post = & get_post ( $attachment -> ID );
$url = wp_get_attachment_url ( $_post -> ID );
$post_title = esc_attr ( $_post -> post_title );
$image = wp_get_attachment_image ( $attachment -> ID , $small_thumbnail_size );
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo '<a href="' . $url . '" title="' . $post_title . '" rel="thumbnails" class="zoom ' ;
2011-10-22 19:20:39 +00:00
if ( $loop == 1 || ( $loop - 1 ) % $columns == 0 ) echo 'first' ;
if ( $loop % $columns == 0 ) echo 'last' ;
2011-08-10 17:11:11 +00:00
echo '">' . $image . '</a>' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
endforeach ;
endif ;
wp_reset_query ();
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo '</div>' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
/**
* After Single Products Summary Div
**/
if ( ! function_exists ( 'woocommerce_output_product_data_tabs' )) {
function woocommerce_output_product_data_tabs () {
2011-12-09 20:16:34 +00:00
woocommerce_get_template ( 'single-product/tabs.php' , false );
2011-08-10 17:11:11 +00:00
}
}
/**
* Product summary box
**/
if ( ! function_exists ( 'woocommerce_template_single_price' )) {
function woocommerce_template_single_price ( $post , $_product ) {
2011-11-19 02:25:15 +00:00
?> <p itemprop="price" class="price"><?php echo $_product->get_price_html(); ?></p><?php
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_template_single_excerpt' )) {
function woocommerce_template_single_excerpt ( $post , $_product ) {
2011-11-19 02:25:15 +00:00
if ( $post -> post_excerpt ) echo '<div itemprop="description">' . wpautop ( wptexturize ( $post -> post_excerpt )) . '</div>' ;
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_template_single_meta' )) {
function woocommerce_template_single_meta ( $post , $_product ) {
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
?>
2011-11-22 15:44:35 +00:00
< div class = " product_meta " >< ? php if ( $_product -> is_type ( 'simple' ) && get_option ( 'woocommerce_enable_sku' ) == 'yes' ) : ?> <span itemprop="productID" class="sku"><?php _e('SKU:', 'woothemes'); ?> <?php echo $_product->sku; ?>.</span><?php endif; ?><?php echo $_product->get_categories( ', ', ' <span class="posted_in">'.__('Category:', 'woothemes').' ', '.</span>'); ?><?php echo $_product->get_tags( ', ', ' <span class="tagged_as">'.__('Tags:', 'woothemes').' ', '.</span>'); ?></div>
2011-08-10 17:11:11 +00:00
< ? php
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_template_single_sharing' )) {
function woocommerce_template_single_sharing ( $post , $_product ) {
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( get_option ( 'woocommerce_sharethis' )) :
echo ' < div class = " social " >
< iframe src = " https://www.facebook.com/plugins/like.php?href='.urlencode(get_permalink( $post->ID )).'&layout=button_count&show_faces=false&width=100&action=like&colorscheme=light&height=21 " scrolling = " no " frameborder = " 0 " style = " border:none; overflow:hidden; width:100px; height:21px; " allowTransparency = " true " ></ iframe >
< span class = " st_twitter " ></ span >< span class = " st_email " ></ span >< span class = " st_sharethis " ></ span >< span class = " st_plusone_button " ></ span >
</ div > ' ;
2011-11-24 00:24:24 +00:00
2011-09-04 00:02:44 +00:00
add_action ( 'wp_footer' , 'woocommerce_sharethis_script' );
2011-08-10 17:11:11 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
2011-09-04 00:02:44 +00:00
/**
* Sharethis
*
* Adds social sharing code to the footer
**/
if ( ! function_exists ( 'woocommerce_sharethis_script' )) {
function woocommerce_sharethis_script () {
if ( is_single () && get_option ( 'woocommerce_sharethis' )) :
2011-11-24 00:24:24 +00:00
2011-12-09 20:29:43 +00:00
$sharethis = ( is_ssl ()) ? 'https://ws.sharethis.com/button/buttons.js' : 'http://w.sharethis.com/button/buttons.js' ;
2011-11-24 00:24:24 +00:00
2011-09-04 00:02:44 +00:00
echo '<script type="text/javascript">var switchTo5x=true;</script><script type="text/javascript" src="' . $sharethis . '"></script><script type="text/javascript">stLight.options({publisher:"' . get_option ( 'woocommerce_sharethis' ) . '"});</script>' ;
2011-11-24 00:24:24 +00:00
2011-09-04 00:02:44 +00:00
endif ;
}
}
2011-08-10 17:11:11 +00:00
/**
* Product Add to cart buttons
**/
if ( ! function_exists ( 'woocommerce_template_single_add_to_cart' )) {
function woocommerce_template_single_add_to_cart ( $post , $_product ) {
2011-12-08 14:53:14 +00:00
do_action ( 'woocommerce_' . $_product -> product_type . '_add_to_cart' , $post , $_product );
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_simple_add_to_cart' )) {
2011-12-08 14:53:14 +00:00
function woocommerce_simple_add_to_cart ( $post , $_product ) {
2011-12-09 19:55:09 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/simple.php' , false );
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_grouped_add_to_cart' )) {
2011-12-08 14:53:14 +00:00
function woocommerce_grouped_add_to_cart ( $post , $_product ) {
2011-12-09 20:16:34 +00:00
woocommerce_get_template ( 'single-product/add-to-cart/grouped.php' , false );
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_variable_add_to_cart' )) {
2011-12-08 14:53:14 +00:00
function woocommerce_variable_add_to_cart ( $post , $_product ) {
2011-12-09 20:16:34 +00:00
global $woocommerce , $available_variations , $attributes , $selected_attributes ;
2011-11-24 00:24:24 +00:00
2011-08-22 14:10:22 +00:00
$attributes = $_product -> get_available_attribute_variations ();
2011-11-15 06:18:31 +00:00
$default_attributes = ( array ) maybe_unserialize ( get_post_meta ( $post -> ID , '_default_attributes' , true ));
$selected_attributes = apply_filters ( 'woocommerce_product_default_attributes' , $default_attributes );
2011-12-09 20:16:34 +00:00
2011-08-22 14:10:22 +00:00
// Put available variations into an array and put in a Javascript variable (JSON encoded)
2011-12-09 20:16:34 +00:00
$available_variations = array ();
foreach ( $_product -> get_children () as $child_id ) {
$variation = $_product -> get_child ( $child_id );
if ( $variation instanceof woocommerce_product_variation ) {
if ( get_post_status ( $variation -> get_variation_id () ) != 'publish' ) continue ; // Disabled
$variation_attributes = $variation -> get_variation_attributes ();
$availability = $variation -> get_availability ();
$availability_html = ( ! empty ( $availability [ 'availability' ])) ? apply_filters ( 'woocommerce_stock_html' , '<p class="stock ' . $availability [ 'class' ] . '">' . $availability [ 'availability' ] . '</p>' , $availability [ 'availability' ] ) : '' ;
if ( has_post_thumbnail ( $variation -> get_variation_id ())) {
$attachment_id = get_post_thumbnail_id ( $variation -> get_variation_id () );
$large_thumbnail_size = apply_filters ( 'single_product_large_thumbnail_size' , 'shop_single' );
$image = current ( wp_get_attachment_image_src ( $attachment_id , $large_thumbnail_size ));
$image_link = current ( wp_get_attachment_image_src ( $attachment_id , 'full' ));
} else {
$image = '' ;
$image_link = '' ;
}
$available_variations [] = array (
'variation_id' => $variation -> get_variation_id (),
'attributes' => $variation_attributes ,
'image_src' => $image ,
'image_link' => $image_link ,
'price_html' => '<span class="price">' . $variation -> get_price_html () . '</span>' ,
'availability_html' => $availability_html ,
);
}
}
woocommerce_get_template ( 'single-product/add-to-cart/variable.php' , false );
2011-08-10 17:11:11 +00:00
}
}
2011-11-08 16:15:36 +00:00
if ( ! function_exists ( 'woocommerce_external_add_to_cart' )) {
2011-12-08 14:53:14 +00:00
function woocommerce_external_add_to_cart ( $post , $_product ) {
2011-12-09 20:16:34 +00:00
global $product_url ;
2011-11-08 16:15:36 +00:00
$product_url = get_post_meta ( $_product -> id , 'product_url' , true );
2011-12-09 20:16:34 +00:00
if ( $product_url ) woocommerce_get_template ( 'single-product/add-to-cart/external.php' , false );
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
**/
if ( ! function_exists ( 'woocommerce_quantity_input' )) {
function woocommerce_quantity_input ( $name = 'quantity' ) {
echo '<div class="quantity"><input name="' . $name . '" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>' ;
}
}
2011-08-10 17:11:11 +00:00
/**
* Product Add to Cart forms
**/
if ( ! function_exists ( 'woocommerce_add_to_cart_form_nonce' )) {
function woocommerce_add_to_cart_form_nonce () {
2011-09-06 11:11:22 +00:00
global $woocommerce ;
$woocommerce -> nonce_field ( 'add_to_cart' );
2011-08-10 17:11:11 +00:00
}
}
/**
* Pagination
**/
if ( ! function_exists ( 'woocommerce_pagination' )) {
function woocommerce_pagination () {
global $wp_query ;
2011-11-24 00:24:24 +00:00
if ( $wp_query -> max_num_pages > 1 ) :
2011-08-10 17:11:11 +00:00
?>
< div class = " navigation " >
< div class = " nav-next " >< ? php next_posts_link ( __ ( 'Next <span class="meta-nav">→</span>' , 'woothemes' ) ); ?> </div>
< div class = " nav-previous " >< ? php previous_posts_link ( __ ( '<span class="meta-nav">←</span> Previous' , 'woothemes' ) ); ?> </div>
</ div >
2011-11-24 00:24:24 +00:00
< ? php
2011-08-10 17:11:11 +00:00
endif ;
}
}
2011-08-17 23:42:07 +00:00
/**
* Sorting
**/
if ( ! function_exists ( 'woocommerce_catalog_ordering' )) {
function woocommerce_catalog_ordering () {
2011-12-05 14:11:29 +00:00
if ( ! isset ( $_SESSION [ 'orderby' ])) $_SESSION [ 'orderby' ] = apply_filters ( 'woocommerce_default_catalog_orderby' , 'title' );
2011-08-17 23:42:07 +00:00
?>
< form class = " woocommerce_ordering " method = " post " >
2011-10-04 09:32:42 +00:00
< select name = " catalog_orderby " class = " orderby " >
2011-11-23 00:53:57 +00:00
< ? php
$catalog_orderby = apply_filters ( 'woocommerce_catalog_orderby' , array (
'title' => __ ( 'Alphabetically' , 'woothemes' ),
'date' => __ ( 'Most Recent' , 'woothemes' ),
'price' => __ ( 'Price' , 'woothemes' )
));
2011-11-24 00:24:24 +00:00
2011-11-23 00:53:57 +00:00
foreach ( $catalog_orderby as $id => $name ) :
2011-11-24 00:24:24 +00:00
2011-11-23 00:53:57 +00:00
echo '<option value="' . $id . '" ' . selected ( $_SESSION [ 'orderby' ], $id , false ) . '>' . $name . '</option>' ;
2011-11-24 00:24:24 +00:00
2011-11-23 00:53:57 +00:00
endforeach ;
?>
2011-08-17 23:42:07 +00:00
</ select >
</ form >
< ? php
2011-11-24 00:24:24 +00:00
2011-08-17 23:42:07 +00:00
}
}
2011-08-10 17:11:11 +00:00
/**
* Product page tabs
**/
if ( ! function_exists ( 'woocommerce_product_description_tab' )) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_description_tab () {
2011-08-10 17:11:11 +00:00
?>
2011-09-21 16:17:28 +00:00
< li >< a href = " #tab-description " >< ? php _e ( 'Description' , 'woothemes' ); ?> </a></li>
2011-08-10 17:11:11 +00:00
< ? php
}
}
if ( ! function_exists ( 'woocommerce_product_attributes_tab' )) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_attributes_tab () {
2011-08-10 17:11:11 +00:00
global $_product ;
2011-09-21 16:17:28 +00:00
if ( $_product -> has_attributes ()) : ?> <li><a href="#tab-attributes"><?php _e('Additional Information', 'woothemes'); ?></a></li><?php endif;
2011-08-10 17:11:11 +00:00
}
}
if ( ! function_exists ( 'woocommerce_product_reviews_tab' )) {
2011-09-21 16:17:28 +00:00
function woocommerce_product_reviews_tab () {
if ( comments_open () ) : ?> <li class="reviews_tab"><a href="#tab-reviews"><?php _e('Reviews', 'woothemes'); ?><?php echo comments_number(' (0)', ' (1)', ' (%)'); ?></a></li><?php endif;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
/**
* Product page tab panels
**/
if ( ! function_exists ( 'woocommerce_product_description_panel' )) {
function woocommerce_product_description_panel () {
echo '<div class="panel" id="tab-description">' ;
2011-11-22 15:30:09 +00:00
$heading = apply_filters ( 'woocommerce_product_description_heading' , __ ( 'Product Description' , 'woothemes' ));
if ( $heading ) echo '<h2>' . $heading . '</h2>' ;
2011-08-10 17:11:11 +00:00
the_content ();
echo '</div>' ;
}
}
if ( ! function_exists ( 'woocommerce_product_attributes_panel' )) {
function woocommerce_product_attributes_panel () {
global $_product ;
echo '<div class="panel" id="tab-attributes">' ;
2011-09-21 16:58:05 +00:00
echo '<h2>' . apply_filters ( 'woocommerce_product_additional_information_heading' , __ ( 'Additional Information' , 'woothemes' )) . '</h2>' ;
2011-11-24 00:24:24 +00:00
$_product -> list_attributes ();
2011-08-10 17:11:11 +00:00
echo '</div>' ;
}
}
if ( ! function_exists ( 'woocommerce_product_reviews_panel' )) {
function woocommerce_product_reviews_panel () {
echo '<div class="panel" id="tab-reviews">' ;
comments_template ();
echo '</div>' ;
}
}
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
/**
* WooCommerce Product Thumbnail
**/
if ( ! function_exists ( 'woocommerce_get_product_thumbnail' )) {
2011-08-27 19:20:28 +00:00
function woocommerce_get_product_thumbnail ( $size = 'shop_catalog' , $placeholder_width = 0 , $placeholder_height = 0 ) {
2011-11-24 00:24:24 +00:00
2011-09-06 11:11:22 +00:00
global $post , $woocommerce ;
2011-11-24 00:24:24 +00:00
2011-10-10 09:47: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-11-24 00:24:24 +00:00
2011-09-06 11:11:22 +00:00
if ( has_post_thumbnail () ) return get_the_post_thumbnail ( $post -> ID , $size ); else return '<img src="' . $woocommerce -> plugin_url () . '/assets/images/placeholder.png" alt="Placeholder" width="' . $placeholder_width . '" height="' . $placeholder_height . '" />' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
/**
* WooCommerce Related Products
**/
if ( ! function_exists ( 'woocommerce_output_related_products' )) {
function woocommerce_output_related_products () {
woocommerce_related_products ( 2 , 2 );
}
}
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( ! function_exists ( 'woocommerce_related_products' )) {
function woocommerce_related_products ( $posts_per_page = 4 , $post_columns = 4 , $orderby = 'rand' ) {
2011-10-22 19:20:39 +00:00
global $_product , $woocommerce_loop ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
// Pass vars to loop
2011-10-22 19:20:39 +00:00
$woocommerce_loop [ 'columns' ] = $post_columns ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$related = $_product -> get_related ();
if ( sizeof ( $related ) > 0 ) :
echo '<div class="related products"><h2>' . __ ( 'Related Products' , 'woothemes' ) . '</h2>' ;
$args = array (
'post_type' => 'product' ,
'ignore_sticky_posts' => 1 ,
2011-09-02 14:42:04 +00:00
'posts_per_page' => $posts_per_page ,
2011-08-10 17:11:11 +00:00
'orderby' => $orderby ,
'post__in' => $related
);
$args = apply_filters ( 'woocommerce_related_products_args' , $args );
query_posts ( $args );
2011-11-24 00:24:24 +00:00
woocommerce_get_template_part ( 'loop' , 'shop' );
2011-08-10 17:11:11 +00:00
echo '</div>' ;
2011-12-09 21:47:12 +00:00
wp_reset_query ();
2011-08-10 17:11:11 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
}
}
/**
* WooCommerce Shipping Calculator
**/
if ( ! function_exists ( 'woocommerce_shipping_calculator' )) {
function woocommerce_shipping_calculator () {
2011-09-06 11:11:22 +00:00
global $woocommerce ;
2011-12-08 12:50:50 +00:00
if ( get_option ( 'woocommerce_enable_shipping_calc' ) == 'yes' && $woocommerce -> cart -> needs_shipping ()) :
2011-12-09 20:29:43 +00:00
woocommerce_get_template ( 'cart/shipping_calculator.php' , false );
2011-08-10 17:11:11 +00:00
endif ;
}
}
2011-09-11 16:42:50 +00:00
/**
* WooCommerce Cart totals
**/
if ( ! function_exists ( 'woocommerce_cart_totals' )) {
function woocommerce_cart_totals () {
2011-12-09 20:29:43 +00:00
woocommerce_get_template ( 'cart/totals.php' , false );
2011-09-11 16:42:50 +00:00
}
}
2011-08-10 17:11:11 +00:00
/**
* WooCommerce Login Form
**/
if ( ! function_exists ( 'woocommerce_login_form' )) {
2011-08-27 11:53:46 +00:00
function woocommerce_login_form ( $message = '' ) {
2011-09-06 11:11:22 +00:00
global $woocommerce ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( is_user_logged_in ()) return ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
?>
< form method = " post " class = " login " >
2011-08-27 11:53:46 +00:00
< ? php if ( $message ) echo wpautop ( wptexturize ( $message )); ?>
2011-08-10 17:11:11 +00:00
< p class = " form-row form-row-first " >
< label for = " username " >< ? php _e ( 'Username' , 'woothemes' ); ?> <span class="required">*</span></label>
< input type = " text " class = " input-text " name = " username " id = " username " />
</ p >
< p class = " form-row form-row-last " >
< label for = " password " >< ? php _e ( 'Password' , 'woothemes' ); ?> <span class="required">*</span></label>
< input class = " input-text " type = " password " name = " password " id = " password " />
</ p >
< div class = " clear " ></ div >
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
< p class = " form-row " >
2011-09-06 11:11:22 +00:00
< ? php $woocommerce -> nonce_field ( 'login' , 'login' ) ?>
2011-08-10 17:11:11 +00:00
< input type = " submit " class = " button " name = " login " value = " <?php _e('Login', 'woothemes'); ?> " />
2011-10-12 10:18:41 +00:00
< a class = " lost_password " href = " <?php echo esc_url( wp_lostpassword_url( home_url() ) ); ?> " >< ? php _e ( 'Lost Password?' , 'woothemes' ); ?> </a>
2011-08-10 17:11:11 +00:00
</ p >
</ form >
< ? php
}
}
/**
2011-11-14 16:46:11 +00:00
* WooCommerce Checkout Login Form
2011-08-10 17:11:11 +00:00
**/
if ( ! function_exists ( 'woocommerce_checkout_login_form' )) {
function woocommerce_checkout_login_form () {
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( is_user_logged_in ()) return ;
2011-11-24 00:24:24 +00:00
2011-11-04 17:48:04 +00:00
if ( get_option ( 'woocommerce_enable_signup_and_login_from_checkout' ) == " no " ) return ;
2011-11-24 00:24:24 +00:00
2011-11-04 17:48:04 +00:00
$info_message = apply_filters ( 'woocommerce_checkout_login_message' , __ ( 'Already registered?' , 'woothemes' ));
2011-11-24 00:24:24 +00:00
2011-11-04 17:48:04 +00:00
?> <p class="info"><?php echo $info_message; ?> <a href="#" class="showlogin"><?php _e('Click here to login', 'woothemes'); ?></a></p><?php
2011-08-10 17:11:11 +00:00
2011-08-27 11:53:46 +00:00
woocommerce_login_form ( __ ( 'If you have shopped with us before, please enter your username and password in the boxes below. If you are a new customer please proceed to the Billing & Shipping section.' , 'woothemes' ) );
2011-08-10 17:11:11 +00:00
}
}
/**
* WooCommerce Breadcrumb
**/
if ( ! function_exists ( 'woocommerce_breadcrumb' )) {
function woocommerce_breadcrumb ( $delimiter = ' › ' , $wrap_before = '<div id="breadcrumb">' , $wrap_after = '</div>' , $before = '' , $after = '' , $home = null ) {
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
global $post , $wp_query , $author , $paged ;
2011-11-24 00:24:24 +00:00
if ( ! $home ) $home = _x ( 'Home' , 'breadcrumb' , 'woothemes' );
2011-08-10 17:11:11 +00:00
$home_link = home_url ();
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$prepend = '' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( get_option ( 'woocommerce_prepend_shop_page_to_urls' ) == " yes " && get_option ( 'woocommerce_shop_page_id' ) && get_option ( 'page_on_front' ) !== get_option ( 'woocommerce_shop_page_id' ) )
$prepend = $before . '<a href="' . get_permalink ( get_option ( 'woocommerce_shop_page_id' ) ) . '">' . get_the_title ( get_option ( 'woocommerce_shop_page_id' ) ) . '</a> ' . $after . $delimiter ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( ( ! is_home () && ! is_front_page () && ! ( is_post_type_archive () && get_option ( 'page_on_front' ) == get_option ( 'woocommerce_shop_page_id' ))) || is_paged () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $wrap_before ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . '<a class="home" href="' . $home_link . '">' . $home . '</a> ' . $after . $delimiter ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( is_category () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$cat_obj = $wp_query -> get_queried_object ();
$this_category = $cat_obj -> term_id ;
$this_category = get_category ( $this_category );
if ( $thisCat -> parent != 0 ) :
$parent_category = get_category ( $this_category -> parent );
echo get_category_parents ( $parent_category , TRUE , $delimiter );
endif ;
echo $before . single_cat_title ( '' , false ) . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_tax ( 'product_cat' ) ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$term = get_term_by ( 'slug' , get_query_var ( 'term' ), get_query_var ( 'taxonomy' ) );
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$parents = array ();
$parent = $term -> parent ;
while ( $parent ) :
$parents [] = $parent ;
$new_parent = get_term_by ( 'id' , $parent , get_query_var ( 'taxonomy' ));
$parent = $new_parent -> parent ;
endwhile ;
if ( ! empty ( $parents )) :
$parents = array_reverse ( $parents );
foreach ( $parents as $parent ) :
$item = get_term_by ( 'id' , $parent , get_query_var ( 'taxonomy' ));
echo $before . '<a href="' . get_term_link ( $item -> slug , 'product_cat' ) . '">' . $item -> name . '</a>' . $after . $delimiter ;
endforeach ;
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$queried_object = $wp_query -> get_queried_object ();
echo $prepend . $before . $queried_object -> name . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_tax ( 'product_tag' ) ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$queried_object = $wp_query -> get_queried_object ();
echo $prepend . $before . __ ( 'Products tagged “' , 'woothemes' ) . $queried_object -> name . '”' . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_day () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . '<a href="' . get_year_link ( get_the_time ( 'Y' )) . '">' . get_the_time ( 'Y' ) . '</a>' . $after . $delimiter ;
echo $before . '<a href="' . get_month_link ( get_the_time ( 'Y' ), get_the_time ( 'm' )) . '">' . get_the_time ( 'F' ) . '</a>' . $after . $delimiter ;
echo $before . get_the_time ( 'd' ) . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_month () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . '<a href="' . get_year_link ( get_the_time ( 'Y' )) . '">' . get_the_time ( 'Y' ) . '</a>' . $after . $delimiter ;
echo $before . get_the_time ( 'F' ) . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_year () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . get_the_time ( 'Y' ) . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_post_type_archive ( 'product' ) && get_option ( 'page_on_front' ) !== get_option ( 'woocommerce_shop_page_id' ) ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$_name = get_option ( 'woocommerce_shop_page_id' ) ? get_the_title ( get_option ( 'woocommerce_shop_page_id' ) ) : ucwords ( get_option ( 'woocommerce_shop_slug' ));
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( is_search ()) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . '<a href="' . get_post_type_archive_link ( 'product' ) . '">' . $_name . '</a>' . $delimiter . __ ( 'Search results for “' , 'woothemes' ) . get_search_query () . '”' . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
else :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . '<a href="' . get_post_type_archive_link ( 'product' ) . '">' . $_name . '</a>' . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_single () && ! is_attachment () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( get_post_type () == 'product' ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
//echo $before . '<a href="' . get_post_type_archive_link('product') . '">' . ucwords(get_option('woocommerce_shop_slug')) . '</a>' . $after . $delimiter;
echo $prepend ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( $terms = wp_get_object_terms ( $post -> ID , 'product_cat' )) :
$term = current ( $terms );
$parents = array ();
$parent = $term -> parent ;
while ( $parent ) :
$parents [] = $parent ;
$new_parent = get_term_by ( 'id' , $parent , 'product_cat' );
$parent = $new_parent -> parent ;
endwhile ;
if ( ! empty ( $parents )) :
$parents = array_reverse ( $parents );
foreach ( $parents as $parent ) :
$item = get_term_by ( 'id' , $parent , 'product_cat' );
echo $before . '<a href="' . get_term_link ( $item -> slug , 'product_cat' ) . '">' . $item -> name . '</a>' . $after . $delimiter ;
endforeach ;
endif ;
echo $before . '<a href="' . get_term_link ( $term -> slug , 'product_cat' ) . '">' . $term -> name . '</a>' . $after . $delimiter ;
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . get_the_title () . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( get_post_type () != 'post' ) :
$post_type = get_post_type_object ( get_post_type ());
$slug = $post_type -> rewrite ;
echo $before . '<a href="' . get_post_type_archive_link ( get_post_type ()) . '">' . $post_type -> labels -> singular_name . '</a>' . $after . $delimiter ;
echo $before . get_the_title () . $after ;
else :
$cat = current ( get_the_category ());
echo get_category_parents ( $cat , TRUE , $delimiter );
echo $before . get_the_title () . $after ;
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_404 () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . __ ( 'Error 404' , 'woothemes' ) . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( ! is_single () && ! is_page () && get_post_type () != 'post' ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$post_type = get_post_type_object ( get_post_type ());
if ( $post_type ) : echo $before . $post_type -> labels -> singular_name . $after ; endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_attachment () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$parent = get_post ( $post -> post_parent );
$cat = get_the_category ( $parent -> ID ); $cat = $cat [ 0 ];
echo get_category_parents ( $cat , TRUE , '' . $delimiter );
echo $before . '<a href="' . get_permalink ( $parent ) . '">' . $parent -> post_title . '</a>' . $after . $delimiter ;
echo $before . get_the_title () . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_page () && ! $post -> post_parent ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . get_the_title () . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_page () && $post -> post_parent ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$parent_id = $post -> post_parent ;
$breadcrumbs = array ();
while ( $parent_id ) {
$page = get_page ( $parent_id );
$breadcrumbs [] = '<a href="' . get_permalink ( $page -> ID ) . '">' . get_the_title ( $page -> ID ) . '</a>' ;
$parent_id = $page -> post_parent ;
}
$breadcrumbs = array_reverse ( $breadcrumbs );
foreach ( $breadcrumbs as $crumb ) :
echo $crumb . '' . $delimiter ;
endforeach ;
echo $before . get_the_title () . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_search () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . __ ( 'Search results for “' , 'woothemes' ) . get_search_query () . '”' . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_tag () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $before . __ ( 'Posts tagged “' , 'woothemes' ) . single_tag_title ( '' , false ) . '”' . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
elseif ( is_author () ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
$userdata = get_userdata ( $author );
2011-10-26 19:10:36 +00:00
echo $before . __ ( 'Author:' , 'woothemes' ) . ' ' . $userdata -> display_name . $after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
if ( get_query_var ( 'paged' ) ) :
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo ' (' . __ ( 'Page' , 'woothemes' ) . ' ' . get_query_var ( 'paged' ) . ')' ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
echo $wrap_after ;
2011-11-24 00:24:24 +00:00
2011-08-10 17:11:11 +00:00
endif ;
}
}
2011-08-11 10:51:33 +00:00
/**
* Display Up Sells
**/
function woocommerce_upsell_display () {
global $_product ;
$upsells = $_product -> get_upsells ();
if ( sizeof ( $upsells ) > 0 ) :
2011-11-19 02:25:15 +00:00
echo '<div class="upsells products"><h2>' . __ ( 'You may also like…' , 'woothemes' ) . '</h2>' ;
2011-08-11 10:51:33 +00:00
$args = array (
'post_type' => 'product' ,
'ignore_sticky_posts' => 1 ,
'posts_per_page' => 4 ,
'orderby' => 'rand' ,
'post__in' => $upsells
);
query_posts ( $args );
2011-11-24 00:24:24 +00:00
woocommerce_get_template_part ( 'loop' , 'shop' );
2011-08-11 10:51:33 +00:00
echo '</div>' ;
endif ;
wp_reset_query ();
}
/**
* Display Cross Sells
**/
2011-08-11 22:39:02 +00:00
function woocommerce_cross_sell_display () {
2011-10-22 19:20:39 +00:00
global $woocommerce_loop , $woocommerce ;
$woocommerce_loop [ 'columns' ] = 2 ;
2011-09-06 11:11:22 +00:00
$crosssells = $woocommerce -> cart -> get_cross_sells ();
2011-11-24 00:24:24 +00:00
2011-08-11 10:51:33 +00:00
if ( sizeof ( $crosssells ) > 0 ) :
echo '<div class="cross-sells"><h2>' . __ ( 'You may be interested in…' , 'woothemes' ) . '</h2>' ;
$args = array (
'post_type' => 'product' ,
'ignore_sticky_posts' => 1 ,
'posts_per_page' => 2 ,
'orderby' => 'rand' ,
'post__in' => $crosssells
);
query_posts ( $args );
2011-11-24 00:24:24 +00:00
woocommerce_get_template_part ( 'loop' , 'shop' );
2011-08-11 10:51:33 +00:00
echo '</div>' ;
endif ;
wp_reset_query ();
}
2011-08-16 14:06:08 +00:00
/**
* Order review table for checkout
**/
function woocommerce_order_review () {
woocommerce_get_template ( 'checkout/review_order.php' , false );
2011-09-04 00:02:44 +00:00
}
/**
* Demo Banner
*
* Adds a demo store banner to the site if enabled
**/
function woocommerce_demo_store () {
2011-12-09 21:47:12 +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.' , 'woothemes' ) . '</p>' );
2011-10-07 19:27:10 +00:00
}
/**
* display product sub categories as thumbnails
**/
function woocommerce_product_subcategories () {
2011-12-09 22:07:43 +00:00
global $woocommerce , $woocommerce_loop , $wp_query , $wp_the_query , $_chosen_attributes , $product_categories , $product_category_found , $product_category_parent ;
2011-11-24 00:24:24 +00:00
2011-10-08 11:14:02 +00:00
if ( $wp_query !== $wp_the_query ) return ; // Detect main query
2011-11-24 00:24:24 +00:00
2011-10-27 11:17:08 +00:00
if ( sizeof ( $_chosen_attributes ) > 0 || ( isset ( $_GET [ 'max_price' ]) && isset ( $_GET [ 'min_price' ]))) return ; // Don't show when filtering
2011-11-24 00:24:24 +00:00
2011-10-09 13:49:56 +00:00
if ( is_search ()) return ;
2011-10-08 11:14:02 +00:00
if ( ! is_product_category () && ! is_shop ()) return ;
2011-10-07 19:27:10 +00:00
if ( is_product_category () && get_option ( 'woocommerce_show_subcategories' ) == 'no' ) return ;
if ( is_shop () && get_option ( 'woocommerce_shop_show_subcategories' ) == 'no' ) return ;
2011-11-13 19:01:10 +00:00
if ( is_paged ()) return ;
2011-10-07 19:27:10 +00:00
$product_cat_slug = get_query_var ( 'product_cat' );
2011-11-24 00:24:24 +00:00
2011-10-07 19:27:10 +00:00
if ( $product_cat_slug ) :
$product_cat = get_term_by ( 'slug' , $product_cat_slug , 'product_cat' );
2011-12-09 22:07:43 +00:00
$product_category_parent = $product_cat -> term_id ;
2011-10-07 19:27:10 +00:00
else :
2011-12-09 22:07:43 +00:00
$product_category_parent = 0 ;
2011-10-07 19:27:10 +00:00
endif ;
2011-11-24 00:24:24 +00:00
2011-10-22 19:38:39 +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-10-07 19:27:10 +00:00
$args = array (
2011-12-09 22:07:43 +00:00
'child_of' => $product_category_parent ,
2011-12-04 02:08:05 +00:00
'menu_order' => 'ASC' ,
2011-10-23 11:25:22 +00:00
'hide_empty' => 1 ,
2011-10-22 19:38:39 +00:00
'hierarchical' => 1 ,
'taxonomy' => 'product_cat' ,
'pad_counts' => 1
2011-10-07 19:27:10 +00:00
);
2011-12-09 22:07:43 +00:00
$product_categories = get_categories ( $args );
2011-11-24 00:24:24 +00:00
2011-12-09 22:07:43 +00:00
if ( $product_categories ) :
2011-10-22 19:38:39 +00:00
2011-12-09 22:07:43 +00:00
woocommerce_get_template ( 'loop-product-cats.php' , false );
// If we are hiding products disable the loop and pagination
if ( $product_category_found == true && get_option ( 'woocommerce_hide_products_when_showing_subcategories' ) == 'yes' ) :
2011-10-22 19:38:39 +00:00
$woocommerce_loop [ 'show_products' ] = false ;
$wp_query -> max_num_pages = 0 ;
endif ;
2011-11-24 00:24:24 +00:00
2011-10-22 19:20:39 +00:00
endif ;
2011-10-07 19:27:10 +00:00
}
2011-10-31 00:47:41 +00:00
/**
* Show subcategory thumbnail
**/
2011-10-07 19:27:10 +00:00
function woocommerce_subcategory_thumbnail ( $category ) {
global $woocommerce ;
2011-11-24 00:24:24 +00:00
2011-12-06 10:34:22 +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' );
2011-11-24 00:24:24 +00:00
2011-10-07 19:27:10 +00:00
$thumbnail_id = get_woocommerce_term_meta ( $category -> term_id , 'thumbnail_id' , true );
2011-11-24 00:24:24 +00:00
2011-10-07 19:27:10 +00:00
if ( $thumbnail_id ) :
$image = wp_get_attachment_image_src ( $thumbnail_id , $small_thumbnail_size );
$image = $image [ 0 ];
else :
$image = $woocommerce -> plugin_url () . '/assets/images/placeholder.png' ;
endif ;
echo '<img src="' . $image . '" alt="' . $category -> slug . '" width="' . $image_width . '" height="' . $image_height . '" />' ;
}
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
**/
2011-12-09 21:47:12 +00:00
function woocommerce_order_details_table ( $id ) {
global $woocommerce , $order_id ;
2011-11-27 00:03:46 +00:00
2011-12-09 21:47:12 +00:00
if ( ! $id ) return ;
2011-11-24 00:24:24 +00:00
2011-12-09 21:47:12 +00:00
$order_id = $id ;
woocommerce_get_template ( 'order/order-details-table.php' , false );
2011-12-09 19:55:09 +00:00
}
/**
* Review comments template
**/
function woocommerce_comments ( $comment , $args , $depth ) {
$GLOBALS [ 'comment' ] = $comment ; global $post ; ?>
< li itemprop = " reviews " itemscope itemtype = " http://schema.org/Review " < ? php comment_class (); ?> id="li-comment-<?php comment_ID() ?>">
< div id = " comment-<?php comment_ID(); ?> " class = " comment_container " >
< ? php echo get_avatar ( $comment , $size = '60' ); ?>
< div class = " comment-text " >
< div itemprop = " reviewRating " itemscope itemtype = " http://schema.org/Rating " class = " star-rating " title = " <?php echo esc_attr( get_comment_meta( $comment->comment_ID , 'rating', true ) ); ?> " >
< span style = " width:<?php echo get_comment_meta( $comment->comment_ID , 'rating', true )*16; ?>px " >< span itemprop = " ratingValue " >< ? php echo get_comment_meta ( $comment -> comment_ID , 'rating' , true ); ?> </span> <?php _e('out of 5', 'woothemes'); ?></span>
</ div >
< ? php if ( $comment -> comment_approved == '0' ) : ?>
< p class = " meta " >< em >< ? php _e ( 'Your comment is awaiting approval' , 'woothemes' ); ?> </em></p>
< ? php else : ?>
< p class = " meta " >
< ? php _e ( 'Rating by' , 'woothemes' ); ?> <strong itemprop="author"><?php comment_author(); ?></strong> <?php _e('on', 'woothemes'); ?> <time itemprop="datePublished" time datetime="<?php echo get_comment_date('c'); ?>"><?php echo get_comment_date('M jS Y'); ?></time>:
</ p >
< ? php endif ; ?>
< div itemprop = " description " class = " description " >< ? php comment_text (); ?> </div>
< div class = " clear " ></ div >
</ div >
< div class = " clear " ></ div >
</ div >
< ? php
2011-10-31 00:47:41 +00:00
}
2011-12-09 19:55:09 +00:00
/**
* Prevent Cache
**/
function woocommerce_prevent_sidebar_cache () {
echo '<!--mfunc get_sidebar() --><!--/mfunc-->' ;
}