Merge pull request #287 from typeplus/master
Woocommerce templates, Product Gallery & Phpcs fixes - Thx @typeplus
This commit is contained in:
commit
fde1960223
17
footer.php
17
footer.php
|
@ -24,13 +24,15 @@ $container = get_theme_mod( 'understrap_container_type' );
|
||||||
<footer class="site-footer" id="colophon">
|
<footer class="site-footer" id="colophon">
|
||||||
|
|
||||||
<div class="site-info">
|
<div class="site-info">
|
||||||
<a href="<?php echo esc_url( __( 'http://wordpress.org/','understrap' ) ); ?>"><?php printf( esc_html__( 'Proudly powered by %s', 'understrap' ),'WordPress' ); ?></a>
|
/* translators:*/
|
||||||
<span class="sep"> | </span>
|
<a href="<?php echo esc_url( __( 'http://wordpress.org/','understrap' ) ); ?>"><?php printf( esc_html__( 'Proudly powered by %s', 'understrap' ),'WordPress' ); ?></a>
|
||||||
<?php printf( // WPCS: XSS ok.
|
<span class="sep"> | </span>
|
||||||
esc_html__( 'Theme: %1$s by %2$s.', 'understrap' ), $the_theme->get( 'Name' ),
|
/* translators:*/
|
||||||
'<a href="http://understrap.com/">understrap.com</a>' ); ?>
|
<?php printf( // WPCS: XSS ok.
|
||||||
(<?php printf( // WPCS: XSS ok.
|
esc_html__( 'Theme: %1$s by %2$s.', 'understrap' ), $the_theme->get( 'Name' ), '<a href="http://understrap.com/">understrap.com</a>' ); ?>
|
||||||
esc_html__( 'Version: %1$s', 'understrap' ), $the_theme->get( 'Version' ) ); ?>)
|
/* translators:*/
|
||||||
|
(<?php printf( // WPCS: XSS ok.
|
||||||
|
esc_html__( 'Version: %1$s', 'understrap' ), $the_theme->get( 'Version' ) ); ?>)
|
||||||
</div><!-- .site-info -->
|
</div><!-- .site-info -->
|
||||||
|
|
||||||
</footer><!-- #colophon -->
|
</footer><!-- #colophon -->
|
||||||
|
@ -50,3 +52,4 @@ $container = get_theme_mod( 'understrap_container_type' );
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,14 @@ if ( ! function_exists( 'woocommerce_support' ) ) {
|
||||||
*/
|
*/
|
||||||
function woocommerce_support() {
|
function woocommerce_support() {
|
||||||
add_theme_support( 'woocommerce' );
|
add_theme_support( 'woocommerce' );
|
||||||
|
|
||||||
|
// Add New Woocommerce 3.0.0 Product Gallery support
|
||||||
|
add_theme_support( 'wc-product-gallery-lightbox' );
|
||||||
|
add_theme_support( 'wc-product-gallery-zoom' );
|
||||||
|
|
||||||
|
// Gallery slider needs Flexslider - https://woocommerce.com/flexslider/
|
||||||
|
//add_theme_support( 'wc-product-gallery-slider' );
|
||||||
|
|
||||||
// hook in and customizer form fields.
|
// hook in and customizer form fields.
|
||||||
add_filter( 'woocommerce_form_field_args', 'wc_form_field_args', 10, 3 );
|
add_filter( 'woocommerce_form_field_args', 'wc_form_field_args', 10, 3 );
|
||||||
}
|
}
|
||||||
|
@ -91,4 +99,4 @@ function wc_form_field_args( $args, $key, $value = null ) {
|
||||||
break;
|
break;
|
||||||
} // end switch ($args).
|
} // end switch ($args).
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,11 @@
|
||||||
<?php
|
<?php
|
||||||
if ( is_home() && current_user_can( 'publish_posts' ) ) : ?>
|
if ( is_home() && current_user_can( 'publish_posts' ) ) : ?>
|
||||||
|
|
||||||
<p><?php printf( wp_kses( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'understrap' ), array( 'a' => array( 'href' => array() ) ) ), esc_url( admin_url( 'post-new.php' ) ) ); ?></p>
|
<p><?php printf( wp_kses( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'understrap' ), array(
|
||||||
|
'a' => array(
|
||||||
|
'href' => array(),
|
||||||
|
),
|
||||||
|
) ), esc_url( admin_url( 'post-new.php' ) ) ); ?></p>
|
||||||
|
|
||||||
<?php elseif ( is_search() ) : ?>
|
<?php elseif ( is_search() ) : ?>
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<meta name="mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-title"
|
<meta name="apple-mobile-web-app-title"
|
||||||
content="<?php bloginfo( 'name' ); ?> - <?php bloginfo( 'description' ); ?>">
|
content="<?php bloginfo( 'name' ); ?> - <?php bloginfo( 'description' ); ?>">
|
||||||
<link rel="profile" href="http://gmpg.org/xfn/11">
|
<link rel="profile" href="http://gmpg.org/xfn/11">
|
||||||
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
|
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
|
||||||
<?php wp_head(); ?>
|
<?php wp_head(); ?>
|
||||||
|
|
|
@ -25,9 +25,9 @@ $sidebar_pos = get_theme_mod( 'understrap_sidebar_position' );
|
||||||
<?php if ( have_posts() ) : ?>
|
<?php if ( have_posts() ) : ?>
|
||||||
|
|
||||||
<header class="page-header">
|
<header class="page-header">
|
||||||
|
/* translators:*/
|
||||||
<h1 class="page-title"><?php printf( esc_html__( 'Search Results for: %s', 'understrap' ),
|
<h1 class="page-title"><?php printf( esc_html__( 'Search Results for: %s', 'understrap' ),
|
||||||
'<span>' . get_search_query() . '</span>' ); ?></h1>
|
'<span>' . get_search_query() . '</span>' ); ?></h1>
|
||||||
|
|
||||||
</header><!-- .page-header -->
|
</header><!-- .page-header -->
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Cart Page
|
* Cart Page
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,56 +13,55 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.3.8
|
* @version 3.0.3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit; // Exit if accessed directly.
|
exit; // Exit if accessed directly
|
||||||
}
|
}
|
||||||
|
|
||||||
wc_print_notices();
|
wc_print_notices();
|
||||||
|
|
||||||
do_action( 'woocommerce_before_cart' ); ?>
|
do_action( 'woocommerce_before_cart' ); ?>
|
||||||
|
|
||||||
<form action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
|
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
|
||||||
|
<?php do_action( 'woocommerce_before_cart_table' ); ?>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_before_cart_table' ); ?>
|
<table class="shop_table shop_table_responsive cart woocommerce-cart-form__contents" cellspacing="0">
|
||||||
|
<thead>
|
||||||
<table class="shop_table shop_table_responsive cart table-hover table-striped" cellspacing="0">
|
<tr>
|
||||||
<thead>
|
<th class="product-remove"> </th>
|
||||||
<tr>
|
<th class="product-thumbnail"> </th>
|
||||||
<th class="product-remove"> </th>
|
<th class="product-name"><?php _e( 'Product', 'woocommerce' ); ?></th>
|
||||||
<th class="product-thumbnail"> </th>
|
<th class="product-price"><?php _e( 'Price', 'woocommerce' ); ?></th>
|
||||||
<th class="product-name"><?php esc_html_e( 'Product', 'understrap' ); ?></th>
|
<th class="product-quantity"><?php _e( 'Quantity', 'woocommerce' ); ?></th>
|
||||||
<th class="product-price"><?php esc_html_e( 'Price', 'understrap' ); ?></th>
|
<th class="product-subtotal"><?php _e( 'Total', 'woocommerce' ); ?></th>
|
||||||
<th class="product-quantity"><?php esc_html_e( 'Quantity', 'understrap' ); ?></th>
|
</tr>
|
||||||
<th class="product-subtotal"><?php esc_html_e( 'Total', 'understrap' ); ?></th>
|
</thead>
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php do_action( 'woocommerce_before_cart_contents' ); ?>
|
<?php do_action( 'woocommerce_before_cart_contents' ); ?>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
|
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
|
||||||
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
|
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
|
||||||
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
|
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
|
||||||
|
|
||||||
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
|
if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
|
||||||
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
|
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
|
||||||
?>
|
?>
|
||||||
<tr class="<?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
|
<tr class="woocommerce-cart-form__cart-item <?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
|
||||||
|
|
||||||
<td class="product-remove">
|
<td class="product-remove">
|
||||||
<?php
|
<?php
|
||||||
echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
|
echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
|
||||||
'<a href="%s" class="remove" title="%s" data-product_id="%s" data-product_sku="%s">×</a>',
|
'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
|
||||||
esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
|
esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
|
||||||
__( 'Remove this item', 'understrap' ),
|
__( 'Remove this item', 'woocommerce' ),
|
||||||
esc_attr( $product_id ),
|
esc_attr( $product_id ),
|
||||||
esc_attr( $_product->get_sku() )
|
esc_attr( $_product->get_sku() )
|
||||||
), $cart_item_key );
|
), $cart_item_key );
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="product-thumbnail">
|
<td class="product-thumbnail">
|
||||||
<?php
|
<?php
|
||||||
|
@ -84,10 +83,10 @@ do_action( 'woocommerce_before_cart' ); ?>
|
||||||
echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_title() ), $cart_item, $cart_item_key );
|
echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_title() ), $cart_item, $cart_item_key );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Meta data.
|
// Meta data
|
||||||
echo WC()->cart->get_item_data( $cart_item );
|
echo WC()->cart->get_item_data( $cart_item );
|
||||||
|
|
||||||
// Backorder notification.
|
// Backorder notification
|
||||||
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
|
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
|
||||||
echo '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'understrap' ) . '</p>';
|
echo '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'understrap' ) . '</p>';
|
||||||
}
|
}
|
||||||
|
@ -117,29 +116,28 @@ do_action( 'woocommerce_before_cart' ); ?>
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td class="product-subtotal" data-title="<?php _e( 'Total', 'understrap' ); ?>">
|
<td class="product-subtotal" data-title="<?php esc_attr_e( 'Total', 'understrap' ); ?>">
|
||||||
<?php
|
<?php
|
||||||
echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key );
|
echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key );
|
||||||
?>
|
?>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php
|
<?php
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
?>
|
||||||
|
|
||||||
do_action( 'woocommerce_cart_contents' );
|
<?php do_action( 'woocommerce_cart_contents' ); ?>
|
||||||
?>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="6" class="actions">
|
<td colspan="6" class="actions">
|
||||||
|
|
||||||
<?php if ( wc_coupons_enabled() ) { ?>
|
<?php if ( wc_coupons_enabled() ) { ?>
|
||||||
<div class="coupon">
|
<div class="coupon">
|
||||||
|
<label for="coupon_code"><?php _e( 'Coupon:', 'understrap' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'understrap' ); ?>" /> <input type="submit" class="btn btn-outline-primary" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'understrap' ); ?>" />
|
||||||
<label for="coupon_code"><?php _e( 'Coupon:', 'understrap' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'understrap' ); ?>" /> <input type="submit" class=" btn btn-outline-primary" name="apply_coupon" value="<?php esc_attr_e( 'Apply Coupon', 'understrap' ); ?>" />
|
<?php do_action( 'woocommerce_cart_coupon' ); ?>
|
||||||
|
</div>
|
||||||
<?php do_action( 'woocommerce_cart_coupon' ); ?>
|
<?php } ?>
|
||||||
</div>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
<input type="submit" class="btn btn-outline-primary" name="update_cart" value="<?php esc_attr_e( 'Update Cart', 'understrap' ); ?>" />
|
<input type="submit" class="btn btn-outline-primary" name="update_cart" value="<?php esc_attr_e( 'Update Cart', 'understrap' ); ?>" />
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Loop Add to Cart
|
* Loop Add to Cart
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/loop/add-to-cart.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/loop/add-to-cart.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.5.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -28,8 +28,6 @@ echo apply_filters( 'woocommerce_loop_add_to_cart_link',
|
||||||
esc_attr( isset( $quantity ) ? $quantity : 1 ),
|
esc_attr( isset( $quantity ) ? $quantity : 1 ),
|
||||||
esc_attr( $product->id ),
|
esc_attr( $product->id ),
|
||||||
esc_attr( $product->get_sku() ),
|
esc_attr( $product->get_sku() ),
|
||||||
// TODO: load add to cart button class from customizer?
|
|
||||||
// esc_attr( isset( $class ) ? $class : 'button' ),
|
|
||||||
esc_html( $product->add_to_cart_text() )
|
esc_html( $product->add_to_cart_text() )
|
||||||
),
|
),
|
||||||
$product );
|
$product );
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Downloads
|
* Downloads
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* Shows downloads on the account page.
|
* Shows downloads on the account page.
|
||||||
*
|
*
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/downloads.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/downloads.php.
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -43,55 +43,55 @@ do_action( 'woocommerce_before_account_downloads', $has_downloads ); ?>
|
||||||
<tr>
|
<tr>
|
||||||
<?php foreach ( wc_get_account_downloads_columns() as $column_id => $column_name ) : ?>
|
<?php foreach ( wc_get_account_downloads_columns() as $column_id => $column_name ) : ?>
|
||||||
<td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
|
<td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
|
||||||
<?php if ( has_action( 'woocommerce_account_downloads_column_' . $column_id ) ) : ?>
|
<?php
|
||||||
<?php do_action( 'woocommerce_account_downloads_column_' . $column_id, $download ); ?>
|
if ( has_action( 'woocommerce_account_downloads_column_' . $column_id ) ) {
|
||||||
|
do_action( 'woocommerce_account_downloads_column_' . $column_id, $download );
|
||||||
<?php elseif ( 'download-file' === $column_id ) : ?>
|
} else {
|
||||||
<a href="<?php echo esc_url( get_permalink( $download['product_id'] ) ); ?>">
|
switch ( $column_id ) {
|
||||||
<?php echo esc_html( $download['download_name'] ); ?>
|
case 'download-product' : ?>
|
||||||
</a>
|
<a href="<?php echo esc_url( get_permalink( $download['product_id'] ) ); ?>">
|
||||||
|
<?php echo esc_html( $download['product_name'] ); ?>
|
||||||
<?php elseif ( 'download-remaining' === $column_id ) : ?>
|
</a>
|
||||||
<?php
|
<?php break;
|
||||||
if ( is_numeric( $download['downloads_remaining'] ) ) {
|
case 'download-file' : ?>
|
||||||
echo esc_html( $download['downloads_remaining'] );
|
<a href="<?php echo esc_url( $download['download_url'] ); ?>" class="woocommerce-MyAccount-downloads-file">
|
||||||
} else {
|
<?php echo esc_html( $download['file']['name'] ); ?>
|
||||||
_e( '∞', 'understrap' );
|
</a>
|
||||||
|
<?php break;
|
||||||
|
case 'download-remaining' :
|
||||||
|
echo is_numeric( $download['downloads_remaining'] ) ? esc_html( $download['downloads_remaining'] ) : __( '∞', 'woocommerce' );
|
||||||
|
break;
|
||||||
|
case 'download-expires' : ?>
|
||||||
|
<?php if ( ! empty( $download['access_expires'] ) ) : ?>
|
||||||
|
<time datetime="<?php echo date( 'Y-m-d', strtotime( $download['access_expires'] ) ); ?>" title="<?php echo esc_attr( strtotime( $download['access_expires'] ) ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $download['access_expires'] ) ); ?></time>
|
||||||
|
<?php else : ?>
|
||||||
|
<?php _e( 'Never', 'understrap' ); ?>
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php break;
|
||||||
|
case 'download-actions' : ?>
|
||||||
|
<?php
|
||||||
|
$actions = array(
|
||||||
|
'download' => array(
|
||||||
|
'url' => $download['download_url'],
|
||||||
|
'name' => __( 'Download', 'understrap' ),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
if ( $actions = apply_filters( 'woocommerce_account_download_actions', $actions, $download ) ) {
|
||||||
|
foreach ( $actions as $key => $action ) {
|
||||||
|
echo '<a href="' . esc_url( $action['url'] ) . '" class="btn btn-outline-primary' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<?php break;
|
||||||
}
|
}
|
||||||
?>
|
}
|
||||||
|
?>
|
||||||
<?php elseif ( 'download-expires' === $column_id ) : ?>
|
|
||||||
<?php if ( ! empty( $download['access_expires'] ) ) : ?>
|
|
||||||
<time datetime="<?php echo date( 'Y-m-d', strtotime( $download['access_expires'] ) ); ?>" title="<?php echo esc_attr( strtotime( $download['access_expires'] ) ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $download['access_expires'] ) ); ?></time>
|
|
||||||
<?php else : ?>
|
|
||||||
<?php _e( 'Never', 'understrap' ); ?>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<?php elseif ( 'download-actions' === $column_id ) : ?>
|
|
||||||
<?php
|
|
||||||
$actions = array(
|
|
||||||
'download' => array(
|
|
||||||
'url' => $download['download_url'],
|
|
||||||
'name' => __( 'Download', 'understrap' )
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
if ( $actions = apply_filters( 'woocommerce_account_download_actions', $actions, $download ) ) {
|
|
||||||
foreach ( $actions as $key => $action ) {
|
|
||||||
echo '<a href="' . esc_url( $action['url'] ) . '" class="btn btn-outline-primary ' . sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) . '</a>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php endif; ?>
|
|
||||||
</td>
|
</td>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_after_available_downloads' ); ?>
|
<?php do_action( 'woocommerce_after_available_downloads' ); ?>
|
||||||
|
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<div class="woocommerce-Message woocommerce-Message--info woocommerce-info">
|
<div class="woocommerce-Message woocommerce-Message--info woocommerce-info">
|
||||||
<a class="btn btn-outline-primary" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
|
<a class="btn btn-outline-primary" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Edit address form
|
* Edit address form
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-edit-address.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-edit-address.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,14 +13,14 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$page_title = ( $load_address === 'billing' ) ? __( 'Billing Address', 'understrap' ) : __( 'Shipping Address', 'understrap' );
|
$page_title = ( 'billing' === $load_address ) ? __( 'Billing address', 'understrap' ) : __( 'Shipping address', 'understrap' );
|
||||||
|
|
||||||
do_action( 'woocommerce_before_edit_account_address_form' ); ?>
|
do_action( 'woocommerce_before_edit_account_address_form' ); ?>
|
||||||
|
|
||||||
|
@ -30,23 +30,25 @@ do_action( 'woocommerce_before_edit_account_address_form' ); ?>
|
||||||
|
|
||||||
<form method="post">
|
<form method="post">
|
||||||
|
|
||||||
<h3><?php echo apply_filters( 'woocommerce_my_account_edit_address_title', $page_title ); ?></h3>
|
<h3><?php echo apply_filters( 'woocommerce_my_account_edit_address_title', $page_title, $load_address ); ?></h3>
|
||||||
|
|
||||||
<?php do_action( "woocommerce_before_edit_address_form_{$load_address}" ); ?>
|
<div class="woocommerce-address-fields">
|
||||||
|
<?php do_action( "woocommerce_before_edit_address_form_{$load_address}" ); ?>
|
||||||
|
|
||||||
<?php foreach ( $address as $key => $field ) : ?>
|
<div class="woocommerce-address-fields__field-wrapper">
|
||||||
|
<?php foreach ( $address as $key => $field ) : ?>
|
||||||
|
<?php woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field['value'] ); ?>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
<?php woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field['value'] ); ?>
|
<?php do_action( "woocommerce_after_edit_address_form_{$load_address}" ); ?>
|
||||||
|
|
||||||
<?php endforeach; ?>
|
<p>
|
||||||
|
<input type="submit" class="btn btn-outline-primary" name="save_address" value="<?php esc_attr_e( 'Save address', 'understrap' ); ?>" />
|
||||||
<?php do_action( "woocommerce_after_edit_address_form_{$load_address}" ); ?>
|
<?php wp_nonce_field( 'woocommerce-edit_address' ); ?>
|
||||||
|
<input type="hidden" name="action" value="edit_address" />
|
||||||
<p>
|
</p>
|
||||||
<input type="submit" class="btn btn-outline-primary" name="save_address" value="<?php esc_attr_e( 'Save Address', 'understrap' ); ?>" />
|
</div>
|
||||||
<?php wp_nonce_field( 'woocommerce-edit_address' ); ?>
|
|
||||||
<input type="hidden" name="action" value="edit_address" />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Lost password form
|
* Lost password form
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-lost-password.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-lost-password.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -35,7 +35,7 @@ wc_print_notices(); ?>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_lostpassword_form' ); ?>
|
<?php do_action( 'woocommerce_lostpassword_form' ); ?>
|
||||||
|
|
||||||
<p class="woocommerce-FormRow form-row">
|
<p class="woocommerce-form-row form-row">
|
||||||
<input type="hidden" name="wc_reset_password" value="true" />
|
<input type="hidden" name="wc_reset_password" value="true" />
|
||||||
<input type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Reset Password', 'understrap' ); ?>" />
|
<input type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Reset Password', 'understrap' ); ?>" />
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Lost password reset form.
|
* Lost password reset form.
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-reset-password.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-reset-password.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -30,7 +30,7 @@ wc_print_notices(); ?>
|
||||||
<label for="password_1"><?php _e( 'New password', 'understrap' ); ?> <span class="required">*</span></label>
|
<label for="password_1"><?php _e( 'New password', 'understrap' ); ?> <span class="required">*</span></label>
|
||||||
<input type="password" class="woocommerce-Input woocommerce-Input--text input-text form-control" name="password_1" id="password_1" />
|
<input type="password" class="woocommerce-Input woocommerce-Input--text input-text form-control" name="password_1" id="password_1" />
|
||||||
</p>
|
</p>
|
||||||
<p class="woocommerce-FormRow woocommerce-FormRow--last form-row form-row-last">
|
<p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-last">
|
||||||
<label for="password_2"><?php _e( 'Re-enter new password', 'understrap' ); ?> <span class="required">*</span></label>
|
<label for="password_2"><?php _e( 'Re-enter new password', 'understrap' ); ?> <span class="required">*</span></label>
|
||||||
<input type="password" class="woocommerce-Input woocommerce-Input--text input-text form-control" name="password_2" id="password_2" />
|
<input type="password" class="woocommerce-Input woocommerce-Input--text input-text form-control" name="password_2" id="password_2" />
|
||||||
</p>
|
</p>
|
||||||
|
@ -42,7 +42,7 @@ wc_print_notices(); ?>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_resetpassword_form' ); ?>
|
<?php do_action( 'woocommerce_resetpassword_form' ); ?>
|
||||||
|
|
||||||
<p class="woocommerce-FormRow form-row">
|
<p class="woocommerce-form-row form-row">
|
||||||
<input type="hidden" name="wc_reset_password" value="true" />
|
<input type="hidden" name="wc_reset_password" value="true" />
|
||||||
<input type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Save', 'understrap' ); ?>" />
|
<input type="submit" class="btn btn-outline-primary" value="<?php esc_attr_e( 'Save', 'understrap' ); ?>" />
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Orders
|
* Orders
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* Shows orders on the account page.
|
* Shows orders on the account page.
|
||||||
*
|
*
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/orders.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/myaccount/orders.php.
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -26,11 +26,11 @@ do_action( 'woocommerce_before_account_orders', $has_orders ); ?>
|
||||||
|
|
||||||
<?php if ( $has_orders ) : ?>
|
<?php if ( $has_orders ) : ?>
|
||||||
|
|
||||||
<table class="woocommerce-MyAccount-orders shop_table shop_table_responsive my_account_orders account-orders-table table-hover table-striped">
|
<table class="woocommerce-orders-table woocommerce-MyAccount-orders shop_table shop_table_responsive my_account_orders account-orders-table table-hover table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
|
<?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
|
||||||
<th class="<?php echo esc_attr( $column_id ); ?>"><span class="nobr"><?php echo esc_html( $column_name ); ?></span></th>
|
<th class="woocommerce-orders-table__header woocommerce-orders-table__header-<?php echo esc_attr( $column_id ); ?>"><span class="nobr"><?php echo esc_html( $column_name ); ?></span></th>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -40,9 +40,9 @@ do_action( 'woocommerce_before_account_orders', $has_orders ); ?>
|
||||||
$order = wc_get_order( $customer_order );
|
$order = wc_get_order( $customer_order );
|
||||||
$item_count = $order->get_item_count();
|
$item_count = $order->get_item_count();
|
||||||
?>
|
?>
|
||||||
<tr class="order">
|
<tr class="woocommerce-orders-table__row woocommerce-orders-table__row--status-<?php echo esc_attr( $order->get_status() ); ?> order">
|
||||||
<?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
|
<?php foreach ( wc_get_account_orders_columns() as $column_id => $column_name ) : ?>
|
||||||
<td class="<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
|
<td class="woocommerce-orders-table__cell woocommerce-orders-table__cell-<?php echo esc_attr( $column_id ); ?>" data-title="<?php echo esc_attr( $column_name ); ?>">
|
||||||
<?php if ( has_action( 'woocommerce_my_account_my_orders_column_' . $column_id ) ) : ?>
|
<?php if ( has_action( 'woocommerce_my_account_my_orders_column_' . $column_id ) ) : ?>
|
||||||
<?php do_action( 'woocommerce_my_account_my_orders_column_' . $column_id, $order ); ?>
|
<?php do_action( 'woocommerce_my_account_my_orders_column_' . $column_id, $order ); ?>
|
||||||
|
|
||||||
|
@ -52,13 +52,16 @@ do_action( 'woocommerce_before_account_orders', $has_orders ); ?>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<?php elseif ( 'order-date' === $column_id ) : ?>
|
<?php elseif ( 'order-date' === $column_id ) : ?>
|
||||||
<time datetime="<?php echo date( 'Y-m-d', strtotime( $order->order_date ) ); ?>" title="<?php echo esc_attr( strtotime( $order->order_date ) ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $order->order_date ) ); ?></time>
|
<time datetime="<?php echo esc_attr( $order->get_date_created()->date( 'c' ) ); ?>"><?php echo esc_html( wc_format_datetime( $order->get_date_created() ) ); ?></time>
|
||||||
|
|
||||||
<?php elseif ( 'order-status' === $column_id ) : ?>
|
<?php elseif ( 'order-status' === $column_id ) : ?>
|
||||||
<?php echo wc_get_order_status_name( $order->get_status() ); ?>
|
<?php echo esc_html( wc_get_order_status_name( $order->get_status() ) ); ?>
|
||||||
|
|
||||||
<?php elseif ( 'order-total' === $column_id ) : ?>
|
<?php elseif ( 'order-total' === $column_id ) : ?>
|
||||||
<?php echo sprintf( _n( '%s for %s item', '%s for %s items', $item_count, 'understrap' ), $order->get_formatted_order_total(), $item_count ); ?>
|
<?php
|
||||||
|
/* translators: 1: formatted order total 2: total order items */
|
||||||
|
printf( _n( '%1$s for %2$s item', '%1$s for %2$s items', $item_count, 'understrap' ), $order->get_formatted_order_total(), $item_count );
|
||||||
|
?>
|
||||||
|
|
||||||
<?php elseif ( 'order-actions' === $column_id ) : ?>
|
<?php elseif ( 'order-actions' === $column_id ) : ?>
|
||||||
<?php
|
<?php
|
||||||
|
@ -102,21 +105,21 @@ do_action( 'woocommerce_before_account_orders', $has_orders ); ?>
|
||||||
<?php do_action( 'woocommerce_before_account_orders_pagination' ); ?>
|
<?php do_action( 'woocommerce_before_account_orders_pagination' ); ?>
|
||||||
|
|
||||||
<?php if ( 1 < $customer_orders->max_num_pages ) : ?>
|
<?php if ( 1 < $customer_orders->max_num_pages ) : ?>
|
||||||
<div class="woocommerce-Pagination">
|
<div class="woocommerce-pagination woocommerce-pagination--without-numbers woocommerce-Pagination">
|
||||||
<?php if ( 1 !== $current_page ) : ?>
|
<?php if ( 1 !== $current_page ) : ?>
|
||||||
<a class="woocommerce-Button woocommerce-Button--previous button" href="<?php echo esc_url( wc_get_endpoint_url( 'orders', $current_page - 1 ) ); ?>"><?php _e( 'Previous', 'understrap' ); ?></a>
|
<a class="woocommerce-button woocommerce-button--previous woocommerce-Button woocommerce-Button--previous button" href="<?php echo esc_url( wc_get_endpoint_url( 'orders', $current_page - 1 ) ); ?>"><?php _e( 'Previous', 'woocommerce' ); ?></a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ( $current_page !== intval( $customer_orders->max_num_pages ) ) : ?>
|
<?php if ( intval( $customer_orders->max_num_pages ) !== $current_page ) : ?>
|
||||||
<a class="woocommerce-Button woocommerce-Button--next btn btn-outline-primary" href="<?php echo esc_url( wc_get_endpoint_url( 'orders', $current_page + 1 ) ); ?>"><?php _e( 'Next', 'understrap' ); ?></a>
|
<a class="woocommerce-button woocommerce-button--next woocommerce-Button woocommerce-Button--next btn btn-outline-primary" href="<?php echo esc_url( wc_get_endpoint_url( 'orders', $current_page + 1 ) ); ?>"><?php _e( 'Next', 'woocommerce' ); ?></a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php else : ?>
|
<?php else : ?>
|
||||||
<div class="woocommerce-Message woocommerce-Message--info woocommerce-info">
|
<div class="woocommerce-message woocommerce-message--info woocommerce-Message woocommerce-Message--info woocommerce-info">
|
||||||
<a class="btn btn-outline-primary" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
|
<a class="btn btn-outline-primary" href="<?php echo esc_url( apply_filters( 'woocommerce_return_to_shop_redirect', wc_get_page_permalink( 'shop' ) ) ); ?>">
|
||||||
<?php _e( 'Go Shop', 'understrap' ) ?>
|
<?php _e( 'Go shop', 'understrap' ) ?>
|
||||||
</a>
|
</a>
|
||||||
<?php _e( 'No order has been made yet.', 'understrap' ); ?>
|
<?php _e( 'No order has been made yet.', 'understrap' ); ?>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Simple product add to cart
|
* Simple product add to cart
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/add-to-cart/simple.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/add-to-cart/simple.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,11 +13,10 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.1.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit; // Exit if accessed directly
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
global $product;
|
global $product;
|
||||||
|
@ -26,38 +25,44 @@ if ( ! $product->is_purchasable() ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
echo wc_get_stock_html( $product );
|
||||||
|
|
||||||
<?php
|
if ( $product->is_in_stock() ) : ?>
|
||||||
// Availability
|
|
||||||
$availability = $product->get_availability();
|
|
||||||
$availability_html = empty( $availability['availability'] ) ? '' : '<p class="stock ' . esc_attr( $availability['class'] ) . '">' . esc_html( $availability['availability'] ) . '</p>';
|
|
||||||
|
|
||||||
echo apply_filters( 'woocommerce_stock_html', $availability_html, $availability['availability'], $product );
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php if ( $product->is_in_stock() ) : ?>
|
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
<?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
||||||
|
|
||||||
<form class="cart" method="post" enctype='multipart/form-data'>
|
<form class="cart" method="post" enctype='multipart/form-data'>
|
||||||
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
|
<?php
|
||||||
|
/**
|
||||||
|
* @since 2.1.0.
|
||||||
|
*/
|
||||||
|
do_action( 'woocommerce_before_add_to_cart_button' );
|
||||||
|
|
||||||
<?php
|
/**
|
||||||
if ( ! $product->is_sold_individually() ) {
|
* @since 3.0.0.
|
||||||
woocommerce_quantity_input( array(
|
*/
|
||||||
'min_value' => apply_filters( 'woocommerce_quantity_input_min', 1, $product ),
|
do_action( 'woocommerce_before_add_to_cart_quantity' );
|
||||||
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->backorders_allowed() ? '' : $product->get_stock_quantity(), $product ),
|
|
||||||
'input_value' => ( isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : 1 )
|
|
||||||
) );
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />
|
woocommerce_quantity_input( array(
|
||||||
|
'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ),
|
||||||
|
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ),
|
||||||
|
'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( $_POST['quantity'] ) : $product->get_min_purchase_quantity(),
|
||||||
|
) );
|
||||||
|
|
||||||
<button type="submit" class="btn btn-outline-primary"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
|
/**
|
||||||
|
* @since 3.0.0.
|
||||||
|
*/
|
||||||
|
do_action( 'woocommerce_after_add_to_cart_quantity' );
|
||||||
|
?>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
|
<button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @since 2.1.0.
|
||||||
|
*/
|
||||||
|
do_action( 'woocommerce_after_add_to_cart_button' );
|
||||||
|
?>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
|
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Single Product Thumbnails
|
* Single Product Thumbnails
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/product-thumbnails.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/product-thumbnails.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,59 +13,35 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.3
|
* @version 3.0.2
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
global $post, $product, $woocommerce;
|
global $post, $product;
|
||||||
|
|
||||||
$attachment_ids = $product->get_gallery_attachment_ids();
|
$attachment_ids = $product->get_gallery_image_ids();
|
||||||
|
|
||||||
if ( $attachment_ids ) {
|
if ( $attachment_ids && has_post_thumbnail() ) {
|
||||||
$loop = 0;
|
foreach ( $attachment_ids as $attachment_id ) {
|
||||||
$columns = apply_filters( 'woocommerce_product_thumbnails_columns', 3 );
|
$full_size_image = wp_get_attachment_image_src( $attachment_id, 'full' );
|
||||||
?>
|
$thumbnail = wp_get_attachment_image_src( $attachment_id, 'shop_thumbnail' );
|
||||||
<div class="thumbnails <?php echo 'columns-' . $columns; ?>"><?php
|
$image_title = get_post_field( 'post_excerpt', $attachment_id );
|
||||||
|
|
||||||
foreach ( $attachment_ids as $attachment_id ) {
|
$attributes = array(
|
||||||
|
'title' => $image_title,
|
||||||
|
'data-src' => $full_size_image[0],
|
||||||
|
'data-large_image' => $full_size_image[0],
|
||||||
|
'data-large_image_width' => $full_size_image[1],
|
||||||
|
'data-large_image_height' => $full_size_image[2],
|
||||||
|
);
|
||||||
|
|
||||||
$classes = array( 'zoom' );
|
$html = '<div data-thumb="' . esc_url( $thumbnail[0] ) . '" class="woocommerce-product-gallery__image"><a href="' . esc_url( $full_size_image[0] ) . '">';
|
||||||
|
$html .= wp_get_attachment_image( $attachment_id, 'shop_single', false, $attributes );
|
||||||
|
$html .= '</a></div>';
|
||||||
|
|
||||||
if ( $loop === 0 || $loop % $columns === 0 ) {
|
echo apply_filters( 'woocommerce_single_product_image_thumbnail_html', $html, $attachment_id );
|
||||||
$classes[] = 'first';
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ( ( $loop + 1 ) % $columns === 0 ) {
|
|
||||||
$classes[] = 'last';
|
|
||||||
}
|
|
||||||
|
|
||||||
$image_class = implode( ' ', $classes );
|
|
||||||
$props = wc_get_product_attachment_props( $attachment_id, $post );
|
|
||||||
|
|
||||||
if ( ! $props['url'] ) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
echo apply_filters(
|
|
||||||
'woocommerce_single_product_image_thumbnail_html',
|
|
||||||
sprintf(
|
|
||||||
'<a href="%s" class="%s img-thumbnail" title="%s" data-rel="prettyPhoto[product-gallery]">%s</a>',
|
|
||||||
esc_url( $props['url'] ),
|
|
||||||
esc_attr( $image_class ),
|
|
||||||
esc_attr( $props['caption'] ),
|
|
||||||
wp_get_attachment_image( $attachment_id, apply_filters( 'single_product_small_thumbnail_size', 'shop_thumbnail' ), 0, $props )
|
|
||||||
),
|
|
||||||
$attachment_id,
|
|
||||||
$post->ID,
|
|
||||||
esc_attr( $image_class )
|
|
||||||
);
|
|
||||||
|
|
||||||
$loop++;
|
|
||||||
}
|
|
||||||
|
|
||||||
?></div>
|
|
||||||
<?php
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* The template to display the reviewers star rating in reviews
|
* The template to display the reviewers star rating in reviews
|
||||||
*
|
* Updated for Understrap to maintain Woocommerce 3.0.3 compatability.
|
||||||
* This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
|
* This template can be overridden by copying it to yourtheme/woocommerce/content-product.php.
|
||||||
*
|
*
|
||||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
* @see https://docs.woocommerce.com/document/template-structure/
|
* @see https://docs.woocommerce.com/document/template-structure/
|
||||||
* @author WooThemes
|
* @author WooThemes
|
||||||
* @package WooCommerce/Templates
|
* @package WooCommerce/Templates
|
||||||
* @version 2.6.0
|
* @version 3.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
@ -25,8 +25,11 @@ $rating = intval( get_comment_meta( $comment->comment_ID, 'rating', true ) );
|
||||||
|
|
||||||
if ( $rating && get_option( 'woocommerce_enable_review_rating' ) === 'yes' ) { ?>
|
if ( $rating && get_option( 'woocommerce_enable_review_rating' ) === 'yes' ) { ?>
|
||||||
|
|
||||||
<div itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating" class="star-rating text-primary" title="<?php echo sprintf( esc_attr__( 'Rated %d out of 5', 'understrap' ), esc_attr( $rating ) ) ?>">
|
<div class="star-rating">
|
||||||
<span style="width:<?php echo ( esc_attr( $rating ) / 5 ) * 100; ?>%"><strong itemprop="ratingValue"><?php echo esc_attr( $rating ); ?></strong> <?php esc_attr_e( 'out of 5', 'understrap' ); ?></span>
|
<span style="width:<?php echo ( esc_attr( $rating ) / 5 ) * 100; ?>%"><?php
|
||||||
|
/* translators: %s: rating */
|
||||||
|
printf( esc_html__( '%s out of 5', 'understrap' ), '<strong>' . $rating . '</strong>' );
|
||||||
|
?></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php }
|
<?php }
|
||||||
|
|
Reference in New Issue