949 lines
33 KiB
PHP
949 lines
33 KiB
PHP
<?php
|
|
/**
|
|
* WooCommerce Template Functions
|
|
*
|
|
* Functions used in the template files to output content - in most cases hooked in via the template actions.
|
|
*
|
|
* @package WooCommerce
|
|
* @category Core
|
|
* @author WooThemes
|
|
*/
|
|
|
|
/**
|
|
* Content Wrappers
|
|
**/
|
|
if (!function_exists('woocommerce_output_content_wrapper')) {
|
|
function woocommerce_output_content_wrapper() {
|
|
if ( get_option('template') === 'twentyeleven' ) :
|
|
echo '<div id="primary"><div id="content" role="main">';
|
|
else :
|
|
echo '<div id="container"><div id="content" role="main">';
|
|
endif;
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_output_content_wrapper_end')) {
|
|
function woocommerce_output_content_wrapper_end() {
|
|
if ( get_option('template') === 'twentyeleven' ) :
|
|
echo '</div></div>';
|
|
else :
|
|
echo '</div></div>';
|
|
endif;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sale Flash
|
|
**/
|
|
if (!function_exists('woocommerce_show_product_sale_flash')) {
|
|
function woocommerce_show_product_sale_flash( $post, $_product ) {
|
|
if ($_product->is_on_sale()) echo '<span class="onsale">'.__('Sale!', 'woothemes').'</span>';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sidebar
|
|
**/
|
|
if (!function_exists('woocommerce_get_sidebar')) {
|
|
function woocommerce_get_sidebar() {
|
|
get_sidebar('shop');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Products Loop
|
|
**/
|
|
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
|
|
function woocommerce_template_loop_add_to_cart( $post, $_product ) {
|
|
|
|
// No price set - so no button
|
|
if( $_product->get_price() === '') return;
|
|
|
|
?><a href="<?php echo $_product->add_to_cart_url(); ?>" rel="<?php echo $_product->id; ?>" class="button add_to_cart_button product_type_<?php echo $_product->product_type; ?>"><?php _e('Add to cart', 'woothemes'); ?></a><?php
|
|
}
|
|
}
|
|
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 ) {
|
|
?><span class="price"><?php echo $_product->get_price_html(); ?></span><?php
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check product visibility in loop
|
|
**/
|
|
if (!function_exists('woocommerce_check_product_visibility')) {
|
|
function woocommerce_check_product_visibility( $post, $_product ) {
|
|
if (!$_product->is_visible() && $post->post_parent > 0) : wp_safe_redirect(get_permalink($post->post_parent)); exit; endif;
|
|
|
|
if (!$_product->is_visible()) : wp_safe_redirect(home_url()); exit; endif;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Before Single Products Summary Div
|
|
**/
|
|
if (!function_exists('woocommerce_show_product_images')) {
|
|
function woocommerce_show_product_images() {
|
|
|
|
global $_product, $post, $woocommerce;
|
|
|
|
echo '<div class="images">';
|
|
|
|
$thumb_id = 0;
|
|
if (has_post_thumbnail()) :
|
|
$thumb_id = get_post_thumbnail_id();
|
|
$large_thumbnail_size = apply_filters('single_product_large_thumbnail_size', 'shop_single');
|
|
echo '<a href="'.wp_get_attachment_url($thumb_id).'" class="zoom" rel="thumbnails">';
|
|
the_post_thumbnail($large_thumbnail_size);
|
|
echo '</a>';
|
|
else :
|
|
echo '<img src="'.$woocommerce->plugin_url().'/assets/images/placeholder.png" alt="Placeholder" />';
|
|
endif;
|
|
|
|
do_action('woocommerce_product_thumbnails');
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_show_product_thumbnails')) {
|
|
function woocommerce_show_product_thumbnails() {
|
|
|
|
global $_product, $post;
|
|
|
|
echo '<div class="thumbnails">';
|
|
|
|
$thumb_id = get_post_thumbnail_id();
|
|
$small_thumbnail_size = apply_filters('single_product_small_thumbnail_size', 'shop_thumbnail');
|
|
$args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => $post->ID );
|
|
$attachments = get_posts($args);
|
|
if ($attachments) :
|
|
$loop = 0;
|
|
$columns = 3;
|
|
foreach ( $attachments as $attachment ) :
|
|
|
|
if ($thumb_id==$attachment->ID) continue;
|
|
|
|
$loop++;
|
|
|
|
$_post = & get_post( $attachment->ID );
|
|
$url = wp_get_attachment_url($_post->ID);
|
|
$post_title = esc_attr($_post->post_title);
|
|
$image = wp_get_attachment_image($attachment->ID, $small_thumbnail_size);
|
|
|
|
echo '<a href="'.$url.'" title="'.$post_title.'" rel="thumbnails" class="zoom ';
|
|
if ($loop==1 || ($loop-1)%$columns==0) echo 'first';
|
|
if ($loop%$columns==0) echo 'last';
|
|
echo '">'.$image.'</a>';
|
|
|
|
endforeach;
|
|
endif;
|
|
wp_reset_query();
|
|
|
|
echo '</div>';
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* After Single Products Summary Div
|
|
**/
|
|
if (!function_exists('woocommerce_output_product_data_tabs')) {
|
|
function woocommerce_output_product_data_tabs() {
|
|
|
|
if (isset($_COOKIE["current_tab"])) $current_tab = $_COOKIE["current_tab"]; else $current_tab = '#tab-description';
|
|
|
|
?>
|
|
<div class="woocommerce_tabs">
|
|
<ul class="tabs">
|
|
<?php do_action('woocommerce_product_tabs', $current_tab); ?>
|
|
</ul>
|
|
<?php do_action('woocommerce_product_tab_panels'); ?>
|
|
</div>
|
|
<?php
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Product summary box
|
|
**/
|
|
if (!function_exists('woocommerce_template_single_price')) {
|
|
function woocommerce_template_single_price( $post, $_product ) {
|
|
?><p class="price"><?php echo $_product->get_price_html(); ?></p><?php
|
|
}
|
|
}
|
|
|
|
if (!function_exists('woocommerce_template_single_excerpt')) {
|
|
function woocommerce_template_single_excerpt( $post, $_product ) {
|
|
if ($post->post_excerpt) echo wpautop(wptexturize($post->post_excerpt));
|
|
}
|
|
}
|
|
|
|
if (!function_exists('woocommerce_template_single_meta')) {
|
|
function woocommerce_template_single_meta( $post, $_product ) {
|
|
|
|
?>
|
|
<div class="product_meta"><?php if ($_product->is_type('simple') && get_option('woocommerce_enable_sku')=='yes') : ?><span class="sku">SKU: <?php echo $_product->sku; ?>.</span><?php endif; ?><?php echo $_product->get_categories( ', ', ' <span class="posted_in">Posted in ', '.</span>'); ?><?php echo $_product->get_tags( ', ', ' <span class="tagged_as">Tagged as ', '.</span>'); ?></div>
|
|
<?php
|
|
|
|
}
|
|
}
|
|
|
|
if (!function_exists('woocommerce_template_single_sharing')) {
|
|
function woocommerce_template_single_sharing( $post, $_product ) {
|
|
|
|
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>';
|
|
|
|
add_action( 'wp_footer', 'woocommerce_sharethis_script' );
|
|
endif;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Sharethis
|
|
*
|
|
* Adds social sharing code to the footer
|
|
**/
|
|
if (!function_exists('woocommerce_sharethis_script')) {
|
|
function woocommerce_sharethis_script() {
|
|
if (is_single() && get_option('woocommerce_sharethis')) :
|
|
|
|
if (is_ssl()) :
|
|
$sharethis = 'https://ws.sharethis.com/button/buttons.js';
|
|
else :
|
|
$sharethis = 'http://w.sharethis.com/button/buttons.js';
|
|
endif;
|
|
|
|
echo '<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>';
|
|
|
|
endif;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Product Add to cart buttons
|
|
**/
|
|
if (!function_exists('woocommerce_template_single_add_to_cart')) {
|
|
function woocommerce_template_single_add_to_cart( $post, $_product ) {
|
|
do_action( $_product->product_type . '_add_to_cart' );
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_simple_add_to_cart')) {
|
|
function woocommerce_simple_add_to_cart() {
|
|
|
|
global $_product; $availability = $_product->get_availability();
|
|
|
|
// No price set - so no button
|
|
if( $_product->get_price() === '') return;
|
|
|
|
if ($availability['availability']) : ?><p class="stock <?php echo $availability['class'] ?>"><?php echo $availability['availability']; ?></p><?php endif;
|
|
?>
|
|
<form action="<?php echo $_product->add_to_cart_url(); ?>" class="cart" method="post">
|
|
<div class="quantity"><input name="quantity" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>
|
|
<button type="submit" class="button alt"><?php _e('Add to cart', 'woothemes'); ?></button>
|
|
<?php do_action('woocommerce_add_to_cart_form'); ?>
|
|
</form>
|
|
<?php
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_virtual_add_to_cart')) {
|
|
function woocommerce_virtual_add_to_cart() {
|
|
|
|
woocommerce_simple_add_to_cart();
|
|
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_downloadable_add_to_cart')) {
|
|
function woocommerce_downloadable_add_to_cart() {
|
|
|
|
global $_product; $availability = $_product->get_availability();
|
|
|
|
// No price set - so no button
|
|
if( $_product->get_price() === '') return;
|
|
|
|
if ($availability['availability']) : ?><p class="stock <?php echo $availability['class'] ?>"><?php echo $availability['availability']; ?></p><?php endif;
|
|
|
|
?>
|
|
<form action="<?php echo $_product->add_to_cart_url(); ?>" class="cart" method="post">
|
|
<button type="submit" class="button alt"><?php _e('Add to cart', 'woothemes'); ?></button>
|
|
<?php do_action('woocommerce_add_to_cart_form'); ?>
|
|
</form>
|
|
<?php
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_grouped_add_to_cart')) {
|
|
function woocommerce_grouped_add_to_cart() {
|
|
|
|
global $_product;
|
|
|
|
?>
|
|
<form action="<?php echo $_product->add_to_cart_url(); ?>" class="cart" method="post">
|
|
<table cellspacing="0" class="group_table">
|
|
<tbody>
|
|
<?php foreach ($_product->children as $child) : $child_product = &new woocommerce_product( $child->ID ); $cavailability = $child_product->get_availability(); ?>
|
|
<tr>
|
|
<td><div class="quantity"><input name="quantity[<?php echo $child->ID; ?>]" value="0" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div></td>
|
|
<td><label for="product-<?php echo $child_product->id; ?>"><?php
|
|
if ($child_product->is_visible()) echo '<a href="'.get_permalink($child->ID).'">';
|
|
echo $child_product->get_title();
|
|
if ($child_product->is_visible()) echo '</a>';
|
|
?></label></td>
|
|
<td class="price"><?php echo $child_product->get_price_html(); ?><small class="stock <?php echo $cavailability['class'] ?>"><?php echo $cavailability['availability']; ?></small></td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
<button type="submit" class="button alt"><?php _e('Add to cart', 'woothemes'); ?></button>
|
|
<?php do_action('woocommerce_add_to_cart_form'); ?>
|
|
</form>
|
|
<?php
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_variable_add_to_cart')) {
|
|
function woocommerce_variable_add_to_cart() {
|
|
|
|
global $post, $_product, $woocommerce;
|
|
|
|
$attributes = $_product->get_available_attribute_variations();
|
|
|
|
// Put available variations into an array and put in a Javascript variable (JSON encoded)
|
|
$available_variations = array();
|
|
$children = $_product->get_children();
|
|
|
|
foreach($children as $child) {
|
|
$variation = $child->product;
|
|
|
|
if($variation instanceof woocommerce_product_variation) {
|
|
|
|
if ($variation->variation->post_status != 'publish') continue; // Disabled
|
|
|
|
$variation_attributes = $variation->get_variation_attributes();
|
|
$availability = $variation->get_availability();
|
|
$availability_html = (!empty($availability['availability'])) ? '<p class="stock '.$availability['class'].'">'. $availability['availability'].'</p>' : '';
|
|
|
|
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,
|
|
);
|
|
}
|
|
}
|
|
?>
|
|
<script type="text/javascript">
|
|
var product_variations = <?php echo json_encode($available_variations) ?>;
|
|
</script>
|
|
|
|
<form action="<?php echo $_product->add_to_cart_url(); ?>" class="variations_form cart" method="post">
|
|
<table class="variations" cellspacing="0">
|
|
<tbody>
|
|
<?php foreach ($attributes as $name => $options) :?>
|
|
<tr>
|
|
<td><label for="<?php echo sanitize_title($name); ?>"><?php echo $woocommerce->attribute_label($name); ?></label></td>
|
|
<td><select id="<?php echo sanitize_title($name); ?>" name="tax_<?php echo sanitize_title($name); ?>">
|
|
<option value=""><?php echo __('Choose an option', 'woothemes') ?>…</option>
|
|
<?php if(is_array($options)) : ?>
|
|
<?php foreach ($options as $option) :
|
|
$option_term = get_term_by('slug', $option, $woocommerce->attribute_name($name));
|
|
if (!is_wp_error($option_term) && isset($option_term->name)) :
|
|
$term_name = $option_term->name;
|
|
else :
|
|
$term_name = $option;
|
|
endif;
|
|
?>
|
|
<?php echo '<option value="'.$option.'">'.$term_name.'</option>'; ?>
|
|
<?php endforeach; ?>
|
|
<?php endif;?>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach;?>
|
|
</tbody>
|
|
</table>
|
|
<div class="single_variation_wrap" style="display:none;">
|
|
<div class="single_variation"></div>
|
|
<div class="variations_button">
|
|
<input type="hidden" name="variation_id" value="" />
|
|
<div class="quantity"><input name="quantity" value="1" size="4" title="Qty" class="input-text qty text" maxlength="12" /></div>
|
|
<button type="submit" class="button alt"><?php _e('Add to cart', 'woothemes'); ?></button>
|
|
</div>
|
|
</div>
|
|
<div><input type="hidden" name="product_id" value="<?php echo $post->ID; ?>" /></div>
|
|
<?php do_action('woocommerce_add_to_cart_form'); ?>
|
|
</form>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Product Add to Cart forms
|
|
**/
|
|
if (!function_exists('woocommerce_add_to_cart_form_nonce')) {
|
|
function woocommerce_add_to_cart_form_nonce() {
|
|
global $woocommerce;
|
|
$woocommerce->nonce_field('add_to_cart');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Pagination
|
|
**/
|
|
if (!function_exists('woocommerce_pagination')) {
|
|
function woocommerce_pagination() {
|
|
|
|
global $wp_query;
|
|
|
|
if ( $wp_query->max_num_pages > 1 ) :
|
|
?>
|
|
<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>
|
|
<?php
|
|
endif;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Sorting
|
|
**/
|
|
if (!function_exists('woocommerce_catalog_ordering')) {
|
|
function woocommerce_catalog_ordering() {
|
|
|
|
?>
|
|
<form class="woocommerce_ordering" method="post">
|
|
<select name="orderby" class="orderby">
|
|
<option value="title" <?php if (isset($_SESSION['orderby'])) selected( $_SESSION['orderby'], 'title' ); ?>><?php _e('Alphabetically', 'woo themes'); ?></option>
|
|
<option value="date" <?php if (isset($_SESSION['orderby'])) selected( $_SESSION['orderby'], 'date' ); ?>><?php _e('Most Recent', 'woothemes'); ?></option>
|
|
<option value="price" <?php if (isset($_SESSION['orderby'])) selected( $_SESSION['orderby'], 'price' ); ?>><?php _e('Price', 'woo themes'); ?></option>
|
|
</select>
|
|
</form>
|
|
<?php
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Product page tabs
|
|
**/
|
|
if (!function_exists('woocommerce_product_description_tab')) {
|
|
function woocommerce_product_description_tab( $current_tab ) {
|
|
?>
|
|
<li <?php if ($current_tab=='#tab-description') echo 'class="active"'; ?>><a href="#tab-description"><?php _e('Description', 'woothemes'); ?></a></li>
|
|
<?php
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_product_attributes_tab')) {
|
|
function woocommerce_product_attributes_tab( $current_tab ) {
|
|
|
|
global $_product;
|
|
|
|
if ($_product->has_attributes()) : ?><li <?php if ($current_tab=='#tab-attributes') echo 'class="active"'; ?>><a href="#tab-attributes"><?php _e('Additional Information', 'woothemes'); ?></a></li><?php endif;
|
|
|
|
}
|
|
}
|
|
if (!function_exists('woocommerce_product_reviews_tab')) {
|
|
function woocommerce_product_reviews_tab( $current_tab ) {
|
|
|
|
if ( comments_open() ) : ?><li <?php if ($current_tab=='#tab-reviews') echo 'class="active"'; ?>><a href="#tab-reviews"><?php _e('Reviews', 'woothemes'); ?><?php echo comments_number(' (0)', ' (1)', ' (%)'); ?></a></li><?php endif;
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Product page tab panels
|
|
**/
|
|
if (!function_exists('woocommerce_product_description_panel')) {
|
|
function woocommerce_product_description_panel() {
|
|
echo '<div class="panel" id="tab-description">';
|
|
echo '<h2>' . apply_filters('woocommerce_product_description_heading', __('Product Description', 'woothemes')) . '</h2>';
|
|
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">';
|
|
echo '<h2>' . apply_filters('woocommerce_product_description_heading', __('Additional Information', 'woothemes')) . '</h2>';
|
|
$_product->list_attributes();
|
|
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>';
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* WooCommerce Product Thumbnail
|
|
**/
|
|
if (!function_exists('woocommerce_get_product_thumbnail')) {
|
|
function woocommerce_get_product_thumbnail( $size = 'shop_catalog', $placeholder_width = 0, $placeholder_height = 0 ) {
|
|
|
|
global $post, $woocommerce;
|
|
|
|
if (!$placeholder_width) $placeholder_width = $woocommerce->get_image_size('shop_single_image_width');
|
|
if (!$placeholder_height) $placeholder_height = $woocommerce->get_image_size('shop_single_image_height');
|
|
|
|
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.'" />';
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* WooCommerce Related Products
|
|
**/
|
|
if (!function_exists('woocommerce_output_related_products')) {
|
|
function woocommerce_output_related_products() {
|
|
// 2 Related Products in 2 columns
|
|
woocommerce_related_products( 2, 2 );
|
|
}
|
|
}
|
|
|
|
if (!function_exists('woocommerce_related_products')) {
|
|
function woocommerce_related_products( $posts_per_page = 4, $post_columns = 4, $orderby = 'rand' ) {
|
|
|
|
global $_product, $columns;
|
|
|
|
// Pass vars to loop
|
|
$columns = $post_columns;
|
|
|
|
$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,
|
|
'posts_per_page' => $posts_per_page,
|
|
'orderby' => $orderby,
|
|
'post__in' => $related
|
|
);
|
|
$args = apply_filters('woocommerce_related_products_args', $args);
|
|
query_posts($args);
|
|
woocommerce_get_template_part( 'loop', 'shop' );
|
|
echo '</div>';
|
|
endif;
|
|
wp_reset_query();
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* WooCommerce Shipping Calculator
|
|
**/
|
|
if (!function_exists('woocommerce_shipping_calculator')) {
|
|
function woocommerce_shipping_calculator() {
|
|
global $woocommerce;
|
|
if ($woocommerce->shipping->enabled && get_option('woocommerce_enable_shipping_calc')=='yes' && $woocommerce->cart->needs_shipping()) :
|
|
?>
|
|
<form class="shipping_calculator" action="<?php echo $woocommerce->cart->get_cart_url(); ?>" method="post">
|
|
<h2><a href="#" class="shipping-calculator-button"><?php _e('Calculate Shipping', 'woothemes'); ?> <span>↓</span></a></h2>
|
|
<section class="shipping-calculator-form">
|
|
<p class="form-row">
|
|
<select name="calc_shipping_country" id="calc_shipping_country" class="country_to_state" rel="calc_shipping_state">
|
|
<option value=""><?php _e('Select a country…', 'woothemes'); ?></option>
|
|
<?php
|
|
foreach($woocommerce->countries->get_allowed_countries() as $key=>$value) :
|
|
echo '<option value="'.$key.'"';
|
|
if ($woocommerce->customer->get_shipping_country()==$key) echo 'selected="selected"';
|
|
echo '>'.$value.'</option>';
|
|
endforeach;
|
|
?>
|
|
</select>
|
|
</p>
|
|
<div class="col2-set">
|
|
<p class="form-row col-1">
|
|
<?php
|
|
$current_cc = $woocommerce->customer->get_shipping_country();
|
|
$current_r = $woocommerce->customer->get_shipping_state();
|
|
$states = $woocommerce->countries->states;
|
|
|
|
if (isset( $states[$current_cc][$current_r] )) :
|
|
// Dropdown
|
|
?>
|
|
<span>
|
|
<select name="calc_shipping_state" id="calc_shipping_state"><option value=""><?php _e('Select a state…', 'woothemes'); ?></option><?php
|
|
foreach($states[$current_cc] as $key=>$value) :
|
|
echo '<option value="'.$key.'"';
|
|
if ($current_r==$key) echo 'selected="selected"';
|
|
echo '>'.$value.'</option>';
|
|
endforeach;
|
|
?></select>
|
|
</span>
|
|
<?php
|
|
else :
|
|
// Input
|
|
?>
|
|
<input type="text" class="input-text" value="<?php echo $current_r; ?>" placeholder="<?php _e('state', 'woothemes'); ?>" name="calc_shipping_state" id="calc_shipping_state" />
|
|
<?php
|
|
endif;
|
|
?>
|
|
</p>
|
|
<p class="form-row col-2">
|
|
<input type="text" class="input-text" value="<?php echo $woocommerce->customer->get_shipping_postcode(); ?>" placeholder="<?php _e('Postcode/Zip', 'woothemes'); ?>" title="<?php _e('Postcode', 'woothemes'); ?>" name="calc_shipping_postcode" id="calc_shipping_postcode" />
|
|
</p>
|
|
</div>
|
|
<p><button type="submit" name="calc_shipping" value="1" class="button"><?php _e('Update Totals', 'woothemes'); ?></button></p>
|
|
<?php $woocommerce->nonce_field('cart') ?>
|
|
</section>
|
|
</form>
|
|
<?php
|
|
endif;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* WooCommerce Login Form
|
|
**/
|
|
if (!function_exists('woocommerce_login_form')) {
|
|
function woocommerce_login_form( $message = '' ) {
|
|
global $woocommerce;
|
|
|
|
if (is_user_logged_in()) return;
|
|
|
|
?>
|
|
<form method="post" class="login">
|
|
<?php if ($message) echo wpautop(wptexturize($message)); ?>
|
|
<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>
|
|
|
|
<p class="form-row">
|
|
<?php $woocommerce->nonce_field('login', 'login') ?>
|
|
<input type="submit" class="button" name="login" value="<?php _e('Login', 'woothemes'); ?>" />
|
|
<a class="lost_password" href="<?php echo home_url('wp-login.php?action=lostpassword'); ?>"><?php _e('Lost Password?', 'woothemes'); ?></a>
|
|
</p>
|
|
</form>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
/**
|
|
* WooCommerce Login Form
|
|
**/
|
|
if (!function_exists('woocommerce_checkout_login_form')) {
|
|
function woocommerce_checkout_login_form() {
|
|
|
|
if (is_user_logged_in()) return;
|
|
|
|
?><p class="info"><?php _e('Already registered?', 'woothemes'); ?> <a href="#" class="showlogin"><?php _e('Click here to login', 'woothemes'); ?></a></p><?php
|
|
|
|
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') );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* WooCommerce Breadcrumb
|
|
**/
|
|
if (!function_exists('woocommerce_breadcrumb')) {
|
|
function woocommerce_breadcrumb( $delimiter = ' › ', $wrap_before = '<div id="breadcrumb">', $wrap_after = '</div>', $before = '', $after = '', $home = null ) {
|
|
|
|
global $post, $wp_query, $author, $paged;
|
|
|
|
if( !$home ) $home = _x('Home', 'breadcrumb', 'woothemes');
|
|
|
|
$home_link = home_url();
|
|
|
|
$prepend = '';
|
|
|
|
if ( get_option('woocommerce_prepend_shop_page_to_urls')=="yes" && get_option('woocommerce_shop_page_id') && get_option('page_on_front') !== get_option('woocommerce_shop_page_id') )
|
|
$prepend = $before . '<a href="' . get_permalink( get_option('woocommerce_shop_page_id') ) . '">' . get_the_title( get_option('woocommerce_shop_page_id') ) . '</a> ' . $after . $delimiter;
|
|
|
|
|
|
if ( (!is_home() && !is_front_page() && !(is_post_type_archive() && get_option('page_on_front')==get_option('woocommerce_shop_page_id'))) || is_paged() ) :
|
|
|
|
echo $wrap_before;
|
|
|
|
echo $before . '<a class="home" href="' . $home_link . '">' . $home . '</a> ' . $after . $delimiter ;
|
|
|
|
if ( is_category() ) :
|
|
|
|
$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;
|
|
|
|
elseif ( is_tax('product_cat') ) :
|
|
|
|
//echo $before . '<a href="' . get_post_type_archive_link('product') . '">' . ucwords(get_option('woocommerce_shop_slug')) . '</a>' . $after . $delimiter;
|
|
|
|
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
|
|
|
|
$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;
|
|
|
|
$queried_object = $wp_query->get_queried_object();
|
|
echo $prepend . $before . $queried_object->name . $after;
|
|
|
|
elseif ( is_tax('product_tag') ) :
|
|
|
|
$queried_object = $wp_query->get_queried_object();
|
|
echo $prepend . $before . __('Products tagged “', 'woothemes') . $queried_object->name . '”' . $after;
|
|
|
|
elseif ( is_day() ) :
|
|
|
|
echo $before . '<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;
|
|
|
|
elseif ( is_month() ) :
|
|
|
|
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;
|
|
|
|
elseif ( is_year() ) :
|
|
|
|
echo $before . get_the_time('Y') . $after;
|
|
|
|
elseif ( is_post_type_archive('product') && get_option('page_on_front') !== get_option('woocommerce_shop_page_id') ) :
|
|
|
|
$_name = get_option('woocommerce_shop_page_id') ? get_the_title( get_option('woocommerce_shop_page_id') ) : ucwords(get_option('woocommerce_shop_slug'));
|
|
|
|
if (is_search()) :
|
|
|
|
echo $before . '<a href="' . get_post_type_archive_link('product') . '">' . $_name . '</a>' . $delimiter . __('Search results for “', 'woothemes') . get_search_query() . '”' . $after;
|
|
|
|
else :
|
|
|
|
echo $before . '<a href="' . get_post_type_archive_link('product') . '">' . $_name . '</a>' . $after;
|
|
|
|
endif;
|
|
|
|
elseif ( is_single() && !is_attachment() ) :
|
|
|
|
if ( get_post_type() == 'product' ) :
|
|
|
|
//echo $before . '<a href="' . get_post_type_archive_link('product') . '">' . ucwords(get_option('woocommerce_shop_slug')) . '</a>' . $after . $delimiter;
|
|
echo $prepend;
|
|
|
|
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;
|
|
|
|
echo $before . get_the_title() . $after;
|
|
|
|
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;
|
|
|
|
elseif ( is_404() ) :
|
|
|
|
echo $before . __('Error 404', 'woothemes') . $after;
|
|
|
|
elseif ( !is_single() && !is_page() && get_post_type() != 'post' ) :
|
|
|
|
$post_type = get_post_type_object(get_post_type());
|
|
if ($post_type) : echo $before . $post_type->labels->singular_name . $after; endif;
|
|
|
|
elseif ( is_attachment() ) :
|
|
|
|
$parent = get_post($post->post_parent);
|
|
$cat = get_the_category($parent->ID); $cat = $cat[0];
|
|
echo get_category_parents($cat, TRUE, '' . $delimiter);
|
|
echo $before . '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a>' . $after . $delimiter;
|
|
echo $before . get_the_title() . $after;
|
|
|
|
elseif ( is_page() && !$post->post_parent ) :
|
|
|
|
echo $before . get_the_title() . $after;
|
|
|
|
elseif ( is_page() && $post->post_parent ) :
|
|
|
|
$parent_id = $post->post_parent;
|
|
$breadcrumbs = array();
|
|
while ($parent_id) {
|
|
$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;
|
|
|
|
elseif ( is_search() ) :
|
|
|
|
echo $before . __('Search results for “', 'woothemes') . get_search_query() . '”' . $after;
|
|
|
|
elseif ( is_tag() ) :
|
|
|
|
echo $before . __('Posts tagged “', 'woothemes') . single_tag_title('', false) . '”' . $after;
|
|
|
|
elseif ( is_author() ) :
|
|
|
|
$userdata = get_userdata($author);
|
|
echo $before . __('Author: ', 'woothemes') . $userdata->display_name . $after;
|
|
|
|
endif;
|
|
|
|
if ( get_query_var('paged') ) :
|
|
|
|
echo ' (' . __('Page', 'woothemes') . ' ' . get_query_var('paged') .')';
|
|
|
|
endif;
|
|
|
|
echo $wrap_after;
|
|
|
|
endif;
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Remove the singular class for woocommerce single product
|
|
**/
|
|
function woocommerce_body_classes ($classes) {
|
|
|
|
if( ! is_singular('product') ) return $classes;
|
|
|
|
$key = array_search('singular', $classes);
|
|
if ( $key !== false ) unset($classes[$key]);
|
|
return $classes;
|
|
|
|
}
|
|
|
|
/**
|
|
* Display Up Sells
|
|
**/
|
|
function woocommerce_upsell_display() {
|
|
global $_product;
|
|
$upsells = $_product->get_upsells();
|
|
if (sizeof($upsells)>0) :
|
|
echo '<div class="upsells products"><h2>'.__('You may also like…', 'woothemes').'</h2><ul>';
|
|
$args = array(
|
|
'post_type' => 'product',
|
|
'ignore_sticky_posts' => 1,
|
|
'posts_per_page' => 4,
|
|
'orderby' => 'rand',
|
|
'post__in' => $upsells
|
|
);
|
|
query_posts($args);
|
|
woocommerce_get_template_part( 'loop', 'shop' );
|
|
echo '</div>';
|
|
endif;
|
|
wp_reset_query();
|
|
}
|
|
|
|
/**
|
|
* Display Cross Sells
|
|
**/
|
|
function woocommerce_cross_sell_display() {
|
|
global $columns, $woocommerce;
|
|
$columns = 2;
|
|
$crosssells = $woocommerce->cart->get_cross_sells();
|
|
|
|
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);
|
|
woocommerce_get_template_part( 'loop', 'shop' );
|
|
echo '</div>';
|
|
endif;
|
|
wp_reset_query();
|
|
}
|
|
|
|
|
|
/**
|
|
* Order review table for checkout
|
|
**/
|
|
function woocommerce_order_review() {
|
|
|
|
woocommerce_get_template('checkout/review_order.php', false);
|
|
|
|
}
|
|
|
|
/**
|
|
* Demo Banner
|
|
*
|
|
* Adds a demo store banner to the site if enabled
|
|
**/
|
|
function woocommerce_demo_store() {
|
|
if (get_option('woocommerce_demo_store')=='yes') :
|
|
echo '<p class="demo_store">'.__('This is a demo store for testing purposes — no orders shall be fulfilled.', 'woothemes').'</p>';
|
|
endif;
|
|
}
|