first commit
This commit is contained in:
197
wp-content/themes/thinkai/woocommerce/archive-product.php
Normal file
197
wp-content/themes/thinkai/woocommerce/archive-product.php
Normal file
@@ -0,0 +1,197 @@
|
||||
<?php
|
||||
/**
|
||||
* The Template for displaying product archives, including the main shop page which is a post type archive.
|
||||
*
|
||||
* Override this template by copying it to yourtheme/woocommerce/archive-product.php
|
||||
*
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
get_header();
|
||||
global $wp_query;
|
||||
$data = \THINKAI\Includes\Classes\Common::instance()->data( 'product' )->get();
|
||||
|
||||
$layout = $data->get( 'layout' );
|
||||
$sidebar = $data->get( 'sidebar' );
|
||||
|
||||
$layout = ( $layout ) ? $layout : 'full';
|
||||
$sidebar = ( $sidebar ) ? $sidebar : '';
|
||||
|
||||
if (is_active_sidebar( $sidebar )) {$layout = 'right';} else{$layout = 'full';}
|
||||
$class = ( !$layout || $layout == 'full' ) ? 'col-xl-12 col-lg-12 col-md-12' : 'col-xl-8 col-lg-7 col-md-12';
|
||||
|
||||
if ( class_exists( '\Elementor\Plugin' ) AND $data->get( 'tpl-type' ) == 'e' AND $data->get( 'tpl-elementor' ) ) {
|
||||
echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $data->get( 'tpl-elementor' ) );
|
||||
} else {
|
||||
?>
|
||||
|
||||
<?php if ( class_exists( '\Elementor\Plugin' )): ?>
|
||||
<?php do_action( 'thinkai_banner', $data ); ?>
|
||||
<?php else: ?>
|
||||
<!--Start breadcrumb Style1-->
|
||||
<section class="breadcrumb-style1">
|
||||
<div id="particles-js"></div>
|
||||
<?php if( $data->get( 'banner' ) ){?><div class="breadcrumb-style1-bg" style="background-image: url(<?php echo esc_url( $data->get( 'banner' ) ); ?>);"></div><?php } ?>
|
||||
|
||||
<!--Start Scrolling Text Style6-->
|
||||
<?php
|
||||
$features_list = $data->get('features_list');
|
||||
if(!empty($features_list)){
|
||||
$features_list = explode("\n", ($features_list));
|
||||
?>
|
||||
<div class="scrolling-text-style6">
|
||||
<div class="inner">
|
||||
<ul class="clearfix marquee_mode">
|
||||
<?php foreach($features_list as $features): ?>
|
||||
<li data-hover="<?php echo wp_kses($features, true); ?>">
|
||||
<?php echo wp_kses($features, true); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!--End Scrolling Text Style6-->
|
||||
<div class="container">
|
||||
<div class="inner-content">
|
||||
<div class="title text-center">
|
||||
<h2><?php if( $data->get( 'title' ) ) echo wp_kses( $data->get( 'title' ), true ); else( the_title() ); ?></h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--End breadcrumb Style1-->
|
||||
<?php endif; ?>
|
||||
|
||||
<!--Start Shop Page One-->
|
||||
<section class="shop-page-one te-shop-archive__custom">
|
||||
<div class="shop-page-one_inner">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'left' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
<!-- sidebar area -->
|
||||
|
||||
<div class="content-side <?php echo esc_attr($class); ?> ">
|
||||
|
||||
<div class="our-shop">
|
||||
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
|
||||
|
||||
<!--Sort By-->
|
||||
<div class="items-sorting">
|
||||
<div class="text">
|
||||
<?php woocommerce_result_count(); ?>
|
||||
</div>
|
||||
<div class="woocommerce-form">
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_shop_loop hook
|
||||
*
|
||||
* @hooked woocommerce_result_count - 20
|
||||
* @hooked woocommerce_catalog_ordering - 30
|
||||
*/
|
||||
do_action( 'woocommerce_before_shop_loop' );
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
|
||||
* @hooked woocommerce_breadcrumb - 20
|
||||
*/
|
||||
do_action( 'woocommerce_before_main_content' );
|
||||
?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_archive_description hook
|
||||
*
|
||||
* @hooked woocommerce_taxonomy_archive_description - 10
|
||||
* @hooked woocommerce_product_archive_description - 10
|
||||
*/
|
||||
do_action( 'woocommerce_archive_description' );
|
||||
?>
|
||||
|
||||
<?php if ( have_posts() ) : ?>
|
||||
|
||||
<?php woocommerce_product_loop_start(); ?>
|
||||
|
||||
<?php woocommerce_product_subcategories(); ?>
|
||||
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
|
||||
<?php wc_get_template_part( 'content', 'product' ); ?>
|
||||
|
||||
<?php endwhile; // end of the loop. ?>
|
||||
|
||||
<?php woocommerce_product_loop_end(); ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_shop_loop hook
|
||||
*
|
||||
* @hooked woocommerce_pagination - 10
|
||||
*/
|
||||
do_action( 'woocommerce_after_shop_loop' );
|
||||
?>
|
||||
|
||||
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
|
||||
|
||||
<?php wc_get_template( 'loop/no-products-found.php' ); ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
|
||||
*/
|
||||
do_action( 'woocommerce_after_main_content' );
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'right' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
<!--Sidebar-->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<?php
|
||||
}
|
||||
get_footer( 'shop' );
|
||||
89
wp-content/themes/thinkai/woocommerce/cart/cart-totals.php
Normal file
89
wp-content/themes/thinkai/woocommerce/cart/cart-totals.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/**
|
||||
* Cart totals
|
||||
*
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 2.3.6
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
$allowed_tags = wp_kses_allowed_html('post');
|
||||
?>
|
||||
<div class="cart_totals col-md-4 pull-right <?php if ( WC()->customer->has_calculated_shipping() ) echo 'calculated_shipping'; ?>">
|
||||
|
||||
<?php do_action( 'woocommerce_before_cart_totals' ); ?>
|
||||
|
||||
<h2><?php esc_html_e( 'Cart Totals', 'thinkai' ); ?></h2>
|
||||
|
||||
<table cellspacing="0">
|
||||
|
||||
<tr class="cart-subtotal">
|
||||
<th><?php esc_html_e( 'Subtotal', 'thinkai' ); ?></th>
|
||||
<td><?php wc_cart_totals_subtotal_html(); ?></td>
|
||||
</tr>
|
||||
|
||||
<?php foreach ( WC()->cart->get_coupons() as $code => $coupon ) : ?>
|
||||
<tr class="cart-discount coupon-<?php echo esc_attr( sanitize_title( $code ) ); ?>">
|
||||
<th><?php wc_cart_totals_coupon_label( $coupon ); ?></th>
|
||||
<td><?php wc_cart_totals_coupon_html( $coupon ); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<?php foreach ( WC()->cart->get_fees() as $fee ) : ?>
|
||||
<tr class="fee">
|
||||
<th><?php echo esc_html( $fee->name ); ?></th>
|
||||
<td><?php wc_cart_totals_fee_html( $fee ); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<?php if ( wc_tax_enabled() && WC()->cart->tax_display_cart == 'excl' ) : ?>
|
||||
<?php if ( get_option( 'woocommerce_tax_total_display' ) == 'itemized' ) : ?>
|
||||
<?php foreach ( WC()->cart->get_tax_totals() as $code => $tax ) : ?>
|
||||
<tr class="tax-rate tax-rate-<?php echo sanitize_title( $code ); ?>">
|
||||
<th><?php echo esc_html( $tax->label ); ?></th>
|
||||
<td><?php echo wp_kses( $tax->formatted_amount, $allowed_tags ); ?></td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
<?php else : ?>
|
||||
<tr class="tax-total">
|
||||
<th><?php echo esc_html( WC()->countries->tax_or_vat() ); ?></th>
|
||||
<td><?php wc_cart_totals_taxes_total_html(); ?></td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php do_action( 'woocommerce_cart_totals_before_order_total' ); ?>
|
||||
|
||||
<tr class="order-total">
|
||||
<th><?php esc_html_e( 'Total', 'thinkai' ); ?></th>
|
||||
<td><?php wc_cart_totals_order_total_html(); ?></td>
|
||||
</tr>
|
||||
|
||||
<?php do_action( 'woocommerce_cart_totals_after_order_total' ); ?>
|
||||
|
||||
</table>
|
||||
|
||||
<?php if ( WC()->cart->get_cart_tax() ) : ?>
|
||||
<p class="wc-cart-shipping-notice"><small><?php
|
||||
|
||||
$estimated_text = WC()->customer->is_customer_outside_base() && ! WC()->customer->has_calculated_shipping()
|
||||
? sprintf( ' ' . wp_kses(__( ' (taxes estimated for %s)', 'thinkai' ), WC()->countries->estimated_for_prefix() . WC()->countries->countries[ WC()->countries->get_base_country() ], $allowed_tags ))
|
||||
: '';
|
||||
|
||||
printf( wp_kses(__( 'Note: Shipping and taxes are estimated%s and will be updated during checkout based on your billing and shipping information.', 'thinkai' ), $estimated_text, $allowed_tags ));
|
||||
|
||||
?></small></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="wc-proceed-to-checkout">
|
||||
|
||||
<?php do_action( 'woocommerce_proceed_to_checkout' ); ?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_after_cart_totals' ); ?>
|
||||
|
||||
</div>
|
||||
178
wp-content/themes/thinkai/woocommerce/cart/cart.php
Normal file
178
wp-content/themes/thinkai/woocommerce/cart/cart.php
Normal file
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
/**
|
||||
* Cart Page
|
||||
*
|
||||
* 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
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
do_action( 'woocommerce_before_cart' );
|
||||
$allowed_tags = wp_kses_allowed_html('post');
|
||||
?>
|
||||
|
||||
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
|
||||
<?php do_action( 'woocommerce_before_cart_table' ); ?>
|
||||
|
||||
<table class="shop_table shop_table_responsive cart woocommerce-cart-form__contents" cellspacing="0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="product-remove"> </th>
|
||||
<th class="product-thumbnail"> </th>
|
||||
<th class="product-name"><?php esc_html_e( 'Product', 'thinkai' ); ?></th>
|
||||
<th class="product-price"><?php esc_html_e( 'Price', 'thinkai' ); ?></th>
|
||||
<th class="product-quantity"><?php esc_html_e( 'Quantity', 'thinkai' ); ?></th>
|
||||
<th class="product-subtotal"><?php esc_html_e( 'Subtotal', 'thinkai' ); ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php do_action( 'woocommerce_before_cart_contents' ); ?>
|
||||
|
||||
<?php
|
||||
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_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 ) ) {
|
||||
$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $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">
|
||||
<?php
|
||||
echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
|
||||
'woocommerce_cart_item_remove_link',
|
||||
sprintf(
|
||||
'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
|
||||
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
|
||||
esc_html__( 'Remove this item', 'thinkai' ),
|
||||
esc_attr( $product_id ),
|
||||
esc_attr( $_product->get_sku() )
|
||||
),
|
||||
$cart_item_key
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="product-thumbnail">
|
||||
<?php
|
||||
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
|
||||
|
||||
if ( ! $product_permalink ) {
|
||||
echo wp_kses($thumbnail, $allowed_tags); // PHPCS: XSS ok.
|
||||
} else {
|
||||
printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail ); // PHPCS: XSS ok.
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="product-name" data-title="<?php esc_attr_e( 'Product', 'thinkai' ); ?>">
|
||||
<?php
|
||||
if ( ! $product_permalink ) {
|
||||
echo wp_kses( apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ) . ' ', $allowed_tags );
|
||||
} else {
|
||||
echo wp_kses( apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ), $allowed_tags );
|
||||
}
|
||||
|
||||
do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key );
|
||||
|
||||
// Meta data.
|
||||
echo wc_get_formatted_cart_item_data( $cart_item ); // PHPCS: XSS ok.
|
||||
|
||||
// Backorder notification.
|
||||
if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
|
||||
echo wp_kses( apply_filters( 'woocommerce_cart_item_backorder_notification', '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'thinkai' ) . '</p>', $product_id ), $allowed_tags );
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="product-price" data-title="<?php esc_attr_e( 'Price', 'thinkai' ); ?>">
|
||||
<?php
|
||||
echo apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="product-quantity" data-title="<?php esc_attr_e( 'Quantity', 'thinkai' ); ?>">
|
||||
<?php
|
||||
if ( $_product->is_sold_individually() ) {
|
||||
$product_quantity = sprintf( '1 <input type="hidden" name="cart[%s][qty]" value="1" />', $cart_item_key );
|
||||
} else {
|
||||
$product_quantity = woocommerce_quantity_input(
|
||||
array(
|
||||
'input_name' => "cart[{$cart_item_key}][qty]",
|
||||
'input_value' => $cart_item['quantity'],
|
||||
'max_value' => $_product->get_max_purchase_quantity(),
|
||||
'min_value' => '0',
|
||||
'product_name' => $_product->get_name(),
|
||||
),
|
||||
$_product,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); // PHPCS: XSS ok.
|
||||
?>
|
||||
</td>
|
||||
|
||||
<td class="product-subtotal" data-title="<?php esc_attr_e( 'Subtotal', 'thinkai' ); ?>">
|
||||
<?php
|
||||
echo apply_filters( 'woocommerce_cart_item_subtotal', WC()->cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); // PHPCS: XSS ok.
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<?php do_action( 'woocommerce_cart_contents' ); ?>
|
||||
|
||||
<tr>
|
||||
<td colspan="6" class="actions">
|
||||
|
||||
<?php if ( wc_coupons_enabled() ) { ?>
|
||||
<div class="coupon">
|
||||
<label for="coupon_code"><?php esc_html_e( 'Coupon:', 'thinkai' ); ?></label> <input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'thinkai' ); ?>" /> <button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'thinkai' ); ?>"><?php esc_html_e( 'Apply coupon', 'thinkai' ); ?></button>
|
||||
<?php do_action( 'woocommerce_cart_coupon' ); ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<button type="submit" class="button" name="update_cart" value="<?php esc_attr_e( 'Update cart', 'thinkai' ); ?>"><?php esc_html_e( 'Update cart', 'thinkai' ); ?></button>
|
||||
|
||||
<?php do_action( 'woocommerce_cart_actions' ); ?>
|
||||
|
||||
<?php wp_nonce_field( 'woocommerce-cart', 'woocommerce-cart-nonce' ); ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php do_action( 'woocommerce_after_cart_contents' ); ?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php do_action( 'woocommerce_after_cart_table' ); ?>
|
||||
</form>
|
||||
|
||||
<?php do_action( 'woocommerce_before_cart_collaterals' ); ?>
|
||||
|
||||
<div class="cart-collaterals">
|
||||
<?php
|
||||
/**
|
||||
* Cart collaterals hook.
|
||||
*
|
||||
* @hooked woocommerce_cross_sell_display
|
||||
* @hooked woocommerce_cart_totals - 10
|
||||
*/
|
||||
do_action( 'woocommerce_cart_collaterals' );
|
||||
?>
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_after_cart' ); ?>
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* Checkout Form
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/form-checkout.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.5.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
do_action( 'woocommerce_before_checkout_form', $checkout );
|
||||
|
||||
// If checkout registration is disabled and not logged in, the user cannot checkout.
|
||||
if ( ! $checkout->is_registration_enabled() && $checkout->is_registration_required() && ! is_user_logged_in() ) {
|
||||
echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'thinkai' ) ) );
|
||||
return;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" enctype="multipart/form-data">
|
||||
|
||||
<?php if ( $checkout->get_checkout_fields() ) : ?>
|
||||
|
||||
<?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>
|
||||
|
||||
<div class="col2-set" id="customer_details">
|
||||
<div class="col-1">
|
||||
<?php do_action( 'woocommerce_checkout_billing' ); ?>
|
||||
</div>
|
||||
|
||||
<div class="col-2">
|
||||
<?php do_action( 'woocommerce_checkout_shipping' ); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php do_action( 'woocommerce_checkout_before_order_review_heading' ); ?>
|
||||
|
||||
<h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'thinkai' ); ?></h3>
|
||||
|
||||
<?php do_action( 'woocommerce_checkout_before_order_review' ); ?>
|
||||
|
||||
<div id="order_review" class="woocommerce-checkout-review-order">
|
||||
<?php do_action( 'woocommerce_checkout_order_review' ); ?>
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_checkout_after_order_review' ); ?>
|
||||
|
||||
</form>
|
||||
|
||||
<?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>
|
||||
61
wp-content/themes/thinkai/woocommerce/checkout/payment.php
Normal file
61
wp-content/themes/thinkai/woocommerce/checkout/payment.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* Checkout Payment Section
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/payment.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
if ( ! is_ajax() ) {
|
||||
do_action( 'woocommerce_review_order_before_payment' );
|
||||
}
|
||||
?>
|
||||
<div id="payment" class="woocommerce-checkout-payment">
|
||||
<?php if ( WC()->cart->needs_payment() ) : ?>
|
||||
<ul class="wc_payment_methods payment_methods methods">
|
||||
<?php
|
||||
if ( ! empty( $available_gateways ) ) {
|
||||
foreach ( $available_gateways as $gateway ) {
|
||||
wc_get_template( 'checkout/payment-method.php', array( 'gateway' => $gateway ) );
|
||||
}
|
||||
} else {
|
||||
echo '<li class="woocommerce-notice woocommerce-notice--info woocommerce-info">' . apply_filters( 'woocommerce_no_available_payment_methods_message', WC()->customer->get_billing_country() ? esc_html__( 'Sorry, it seems that there are no available payment methods for your state. Please contact us if you require assistance or wish to make alternate arrangements.', 'thinkai' ) : esc_html__( 'Please fill in your details above to see available payment methods.', 'thinkai' ) ) . '</li>'; // @codingStandardsIgnoreLine
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php endif; ?>
|
||||
<div class="form-row place-order">
|
||||
<noscript>
|
||||
<?php
|
||||
/* translators: $1 and $2 opening and closing emphasis tags respectively */
|
||||
printf( esc_html__( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the %1$sUpdate Totals%2$s button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'thinkai' ), '<em>', '</em>' );
|
||||
?>
|
||||
<br/><button type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php esc_attr_e( 'Update totals', 'thinkai' ); ?>"><?php esc_html_e( 'Update totals', 'thinkai' ); ?></button>
|
||||
</noscript>
|
||||
|
||||
<?php wc_get_template( 'checkout/terms.php' ); ?>
|
||||
|
||||
<?php do_action( 'woocommerce_review_order_before_submit' ); ?>
|
||||
|
||||
<?php echo apply_filters( 'woocommerce_order_button_html', '<button type="submit" class="button alt" name="woocommerce_checkout_place_order" id="place_order" value="' . esc_attr( $order_button_text ) . '" data-value="' . esc_attr( $order_button_text ) . '">' . esc_html( $order_button_text ) . '</button>' ); // @codingStandardsIgnoreLine ?>
|
||||
|
||||
<?php do_action( 'woocommerce_review_order_after_submit' ); ?>
|
||||
|
||||
<?php wp_nonce_field( 'woocommerce-process_checkout', 'woocommerce-process-checkout-nonce' ); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php
|
||||
if ( ! is_ajax() ) {
|
||||
do_action( 'woocommerce_review_order_after_payment' );
|
||||
}
|
||||
115
wp-content/themes/thinkai/woocommerce/content-product.php
Normal file
115
wp-content/themes/thinkai/woocommerce/content-product.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
/**
|
||||
* The template for displaying product content within loops
|
||||
*
|
||||
* 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
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
global $product;
|
||||
|
||||
// Ensure visibility.
|
||||
if ( empty( $product ) || ! $product->is_visible() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
global $wp_query;
|
||||
$data = \THINKAI\Includes\Classes\Common::instance()->data( 'single' )->get();
|
||||
$layout = $data->get( 'layout' );
|
||||
$sidebar = $data->get( 'sidebar' );
|
||||
if (is_active_sidebar( $sidebar )) {$layout = 'right';} else{$layout = 'full';}
|
||||
|
||||
if( !$layout || $layout == 'full' ) $classes[] = 'col-xl-4 col-lg-6 col-md-6'; else $classes[] = 'col-xl-6 col-lg-6 col-md-6';
|
||||
|
||||
$term_list = wp_get_post_terms(get_the_id(), 'product_cat', array("fields" => "names"));
|
||||
$post_thumbnail_id = get_post_thumbnail_id($post->ID);
|
||||
$post_thumbnail_url = wp_get_attachment_url($post_thumbnail_id);
|
||||
|
||||
?>
|
||||
|
||||
<div <?php post_class( $classes ); ?>>
|
||||
<div class="shop-item single-shop-item">
|
||||
<?php
|
||||
/**
|
||||
* Hook: woocommerce_before_shop_loop_item.
|
||||
*
|
||||
* @hooked woocommerce_template_loop_product_link_open - 10
|
||||
*/
|
||||
do_action( 'woocommerce_before_shop_loop_item_title' );
|
||||
|
||||
/**
|
||||
* Hook: woocommerce_before_shop_loop_item_title.
|
||||
*
|
||||
* @hooked woocommerce_show_product_loop_sale_flash - 10
|
||||
* @hooked woocommerce_template_loop_product_thumbnail - 10
|
||||
*/
|
||||
?>
|
||||
|
||||
<div class="img-holder">
|
||||
<?php the_post_thumbnail('thinkai_270x250'); ?>
|
||||
<div class="price-box">
|
||||
<p><?php woocommerce_template_loop_price(); ?></p>
|
||||
</div>
|
||||
<ul class="overlay-icon">
|
||||
<?php
|
||||
$cart_url = wc_get_cart_url();
|
||||
if ($cart_url) {
|
||||
?>
|
||||
<li>
|
||||
<a class="icon1" href="<?php echo esc_url($cart_url); ?>">
|
||||
<span class="icon-shopping-bag"></span>
|
||||
</a>
|
||||
</li>
|
||||
<?php } ?>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_before_shop_loop_item_title' );
|
||||
|
||||
/**
|
||||
* Hook: woocommerce_shop_loop_item_title.
|
||||
*
|
||||
* @hooked woocommerce_template_loop_product_title - 10
|
||||
*/
|
||||
//do_action( 'woocommerce_shop_loop_item_title' );
|
||||
|
||||
/**
|
||||
* Hook: woocommerce_after_shop_loop_item_title.
|
||||
*
|
||||
* @hooked woocommerce_template_loop_rating - 5
|
||||
* @hooked woocommerce_template_loop_price - 10
|
||||
*/
|
||||
do_action( 'woocommerce_after_shop_loop_item_title' );
|
||||
?>
|
||||
|
||||
<div class="title-holder">
|
||||
<h3>
|
||||
<a href="<?php echo esc_url(get_the_permalink(get_the_id())); ?>">
|
||||
<?php the_title(); ?>
|
||||
</a>
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* Hook: woocommerce_after_shop_loop_item.
|
||||
*
|
||||
* @hooked woocommerce_template_loop_product_link_close - 5
|
||||
* @hooked woocommerce_template_loop_add_to_cart - 10
|
||||
*/
|
||||
do_action( 'woocommerce_after_shop_loop_item_title' );
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
116
wp-content/themes/thinkai/woocommerce/content-single-product.php
Normal file
116
wp-content/themes/thinkai/woocommerce/content-single-product.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
/**
|
||||
* The template for displaying product content in the single-product.php template
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/content-single-product.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.6.0
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
$post_thumbnail_id = get_post_thumbnail_id($post->ID);
|
||||
$post_thumbnail_url = wp_get_attachment_url($post_thumbnail_id);
|
||||
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_single_product hook.
|
||||
*
|
||||
* @hooked wc_print_notices - 10
|
||||
*/
|
||||
do_action( 'woocommerce_before_single_product' );
|
||||
if ( post_password_required() ) {
|
||||
echo get_the_password_form();
|
||||
return;
|
||||
}
|
||||
$allowed_tags = wp_kses_allowed_html('post');
|
||||
?>
|
||||
<div id="product-<?php the_ID(); ?>" <?php post_class(); ?>>
|
||||
<div class="row align-items-center">
|
||||
<div class="col-xl-6 col-lg-6">
|
||||
<div class="product-details__img">
|
||||
<div class="product-details__img-inner">
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_single_product_summary hook.
|
||||
*
|
||||
* @hooked woocommerce_show_product_sale_flash - 10
|
||||
* @hooked woocommerce_show_product_images - 20
|
||||
*/
|
||||
do_action( 'woocommerce_before_single_product_summary' );
|
||||
?>
|
||||
<div class="overlay-icon">
|
||||
<a class="lightbox-image" data-fancybox="gallery"
|
||||
href="<?php echo esc_url($post_thumbnail_url); ?>"><span
|
||||
class="icon-zoom-in"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xl-6 col-lg-6">
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_single_product_summary hook.
|
||||
*
|
||||
* @hooked woocommerce_template_single_title - 5
|
||||
* @hooked woocommerce_template_single_rating - 10
|
||||
* @hooked woocommerce_template_single_price - 10
|
||||
* @hooked woocommerce_template_single_excerpt - 20
|
||||
* @hooked woocommerce_template_single_add_to_cart - 30
|
||||
* @hooked woocommerce_template_single_meta - 40
|
||||
* @hooked woocommerce_template_single_sharing - 50
|
||||
* @hooked WC_Structured_Data::generate_product_data() - 60
|
||||
*/
|
||||
do_action( 'woocommerce_single_product_summary' );
|
||||
?>
|
||||
<div class="product-details__content">
|
||||
<div class="product-details__value">
|
||||
<?php woocommerce_template_single_price();?>
|
||||
</div>
|
||||
|
||||
<div class="customer-rating">
|
||||
<div class="rating">
|
||||
<?php woocommerce_template_single_rating(); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="product-details__text text">
|
||||
<?php woocommerce_template_single_excerpt();?>
|
||||
</div>
|
||||
|
||||
<div class="product-quantity-box-outer other-options">
|
||||
<?php woocommerce_template_single_add_to_cart();?>
|
||||
</div>
|
||||
|
||||
<div class="product-details__product-info shop-content">
|
||||
<?php woocommerce_template_single_meta();?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_single_product_summary hook.
|
||||
*
|
||||
* @hooked woocommerce_output_product_data_tabs - 10
|
||||
* @hooked woocommerce_upsell_display - 15
|
||||
* @hooked woocommerce_output_related_products - 20
|
||||
*/
|
||||
do_action( 'woocommerce_after_single_product_summary' );
|
||||
?>
|
||||
</div>
|
||||
</div><!-- #product-<?php the_ID(); ?> -->
|
||||
<?php do_action( 'woocommerce_after_single_product' ); ?>
|
||||
18
wp-content/themes/thinkai/woocommerce/loop/loop-end.php
Normal file
18
wp-content/themes/thinkai/woocommerce/loop/loop-end.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* Product Loop End
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/loop/loop-end.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
|
||||
* will need to copy the new files to your theme to maintain compatibility. We try to do this.
|
||||
* as little as possible, but it does happen. When this occurs the version of the template file will.
|
||||
* be bumped and the readme will list any important changes.
|
||||
*
|
||||
* @see http://docs.woothemes.com/document/template-structure/
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 2.0.0
|
||||
*/
|
||||
?>
|
||||
</div>
|
||||
18
wp-content/themes/thinkai/woocommerce/loop/loop-start.php
Normal file
18
wp-content/themes/thinkai/woocommerce/loop/loop-start.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
/**
|
||||
* Product Loop Start
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/loop/loop-start.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you (the theme developer).
|
||||
* will need to copy the new files to your theme to maintain compatibility. We try to do this.
|
||||
* as little as possible, but it does happen. When this occurs the version of the template file will.
|
||||
* be bumped and the readme will list any important changes.
|
||||
*
|
||||
* @see http://docs.woothemes.com/document/template-structure/
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.6.0
|
||||
*/
|
||||
?>
|
||||
<div class="row clearfix">
|
||||
53
wp-content/themes/thinkai/woocommerce/product-searchform.php
Normal file
53
wp-content/themes/thinkai/woocommerce/product-searchform.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
* The template for displaying product search form
|
||||
|
||||
*
|
||||
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/product-searchform.php.
|
||||
|
||||
*
|
||||
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
|
||||
* the readme will list any important changes.
|
||||
|
||||
*
|
||||
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
|
||||
* @author WooThemes
|
||||
|
||||
* @package WooCommerce/Templates
|
||||
|
||||
* @version 8.6.0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!--Start Sidebar Search Box -->
|
||||
<div class="sidebar-search-box-style2">
|
||||
<form class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
|
||||
<input type="hidden" name="post_type[]" value="product">
|
||||
<input type="text" id="woocommerce-product-search-field-<?php echo isset( $index ) ? absint( $index ) : 0; ?>" placeholder="<?php esc_attr_e( 'Enter Keyword', 'thinkai' ); ?>" value="<?php echo get_search_query(); ?>" name="s" />
|
||||
<button type="submit"><i class="icon-loupe"></i></button>
|
||||
</form>
|
||||
</div>
|
||||
<!--End Sidebar Search Box -->
|
||||
131
wp-content/themes/thinkai/woocommerce/single-product.php
Normal file
131
wp-content/themes/thinkai/woocommerce/single-product.php
Normal file
@@ -0,0 +1,131 @@
|
||||
<?php
|
||||
/**
|
||||
* The Template for displaying all single products.
|
||||
*
|
||||
* Override this template by copying it to yourtheme/woocommerce/single-product.php
|
||||
*
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.6.0
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
get_header( 'shop' );
|
||||
$data = \THINKAI\Includes\Classes\Common::instance()->data( 'single' )->get();
|
||||
|
||||
$layout = $data->get( 'layout' );
|
||||
$sidebar = $data->get( 'sidebar' );
|
||||
$layout = ( $layout ) ? $layout : 'full';
|
||||
$sidebar = ( $sidebar ) ? $sidebar : '';
|
||||
if (is_active_sidebar( $sidebar )) {$layout = 'right';} else{$layout = 'full';}
|
||||
$class = ( !$layout || $layout == 'full' ) ? 'col-xl-12 col-lg-12 col-md-12' : 'col-xl-12 col-lg-12 col-md-12';
|
||||
|
||||
if ( class_exists( '\Elementor\Plugin' ) && $data->get( 'tpl-type' ) == 'e') {
|
||||
|
||||
while(have_posts()) {
|
||||
the_post();
|
||||
the_content();
|
||||
}
|
||||
|
||||
} else {
|
||||
?>
|
||||
|
||||
<?php if ( class_exists( '\Elementor\Plugin' )):?>
|
||||
<?php do_action( 'thinkai_banner', $data );?>
|
||||
<?php else:?>
|
||||
<!--Start breadcrumb Style1-->
|
||||
<section class="breadcrumb-style1">
|
||||
<div id="particles-js"></div>
|
||||
<?php if( $data->get( 'banner' ) ){?><div class="breadcrumb-style1-bg" style="background-image: url(<?php echo esc_url( $data->get( 'banner' ) ); ?>);"></div><?php } ?>
|
||||
|
||||
<!--Start Scrolling Text Style6-->
|
||||
<?php
|
||||
$features_list = $data->get('features_list');
|
||||
if(!empty($features_list)){
|
||||
$features_list = explode("\n", ($features_list));
|
||||
?>
|
||||
<div class="scrolling-text-style6">
|
||||
<div class="inner">
|
||||
<ul class="clearfix marquee_mode">
|
||||
<?php foreach($features_list as $features): ?>
|
||||
<li data-hover="<?php echo wp_kses($features, true); ?>">
|
||||
<?php echo wp_kses($features, true); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!--End Scrolling Text Style6-->
|
||||
<div class="container">
|
||||
<div class="inner-content">
|
||||
<div class="title text-center">
|
||||
<h2><?php if( $data->get( 'title' ) ) echo wp_kses( $data->get( 'title' ), true ); else( the_title() ); ?></h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--End breadcrumb Style1-->
|
||||
<?php endif;?>
|
||||
|
||||
<!--Start Product Details-->
|
||||
<section class="product-details te-shop__detail">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'left' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
<div class="<?php echo esc_attr($class);?>">
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
|
||||
* @hooked woocommerce_breadcrumb - 20
|
||||
*/
|
||||
do_action( 'woocommerce_before_main_content' );
|
||||
?>
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
<?php wc_get_template_part( 'content', 'single-product' ); ?>
|
||||
<?php endwhile; // end of the loop. ?>
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
|
||||
*/
|
||||
do_action( 'woocommerce_after_main_content' );
|
||||
?>
|
||||
</div>
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'right' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
}
|
||||
get_footer( 'shop' );
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
/**
|
||||
* External product add to cart
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/add-to-cart/external.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
||||
|
||||
<form class="cart" action="<?php echo esc_url( $product_url ); ?>" method="get">
|
||||
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
|
||||
<div class="cart-btn cart-btn-box">
|
||||
<button type="submit" class="btn-one"><span class="txt"><?php echo esc_html( $button_text ); ?></span></button>
|
||||
</div>
|
||||
<?php wc_query_string_form_fields( $product_url ); ?>
|
||||
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
|
||||
</form>
|
||||
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
/**
|
||||
* Grouped product add to cart
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/add-to-cart/grouped.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
global $product, $post;
|
||||
|
||||
do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
||||
|
||||
<form class="cart grouped_form" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data'>
|
||||
<table cellspacing="0" class="woocommerce-grouped-product-list group_table">
|
||||
<tbody>
|
||||
<?php
|
||||
$quantites_required = false;
|
||||
$previous_post = $post;
|
||||
$grouped_product_columns = apply_filters( 'woocommerce_grouped_product_columns', array(
|
||||
'quantity',
|
||||
'label',
|
||||
'price',
|
||||
), $product );
|
||||
|
||||
foreach ( $grouped_products as $grouped_product_child ) {
|
||||
$post_object = get_post( $grouped_product_child->get_id() );
|
||||
$quantites_required = $quantites_required || ( $grouped_product_child->is_purchasable() && ! $grouped_product_child->has_options() );
|
||||
$post = $post_object; // WPCS: override ok.
|
||||
setup_postdata( $post );
|
||||
|
||||
echo '<tr id="product-' . esc_attr( $grouped_product_child->get_id() ) . '" class="woocommerce-grouped-product-list-item ' . esc_attr( implode( ' ', wc_get_product_class( '', $grouped_product_child ) ) ) . '">';
|
||||
|
||||
// Output columns for each product.
|
||||
foreach ( $grouped_product_columns as $column_id ) {
|
||||
do_action( 'woocommerce_grouped_product_list_before_' . $column_id, $grouped_product_child );
|
||||
|
||||
switch ( $column_id ) {
|
||||
case 'quantity':
|
||||
ob_start();
|
||||
|
||||
if ( ! $grouped_product_child->is_purchasable() || $grouped_product_child->has_options() || ! $grouped_product_child->is_in_stock() ) {
|
||||
woocommerce_template_loop_add_to_cart();
|
||||
} elseif ( $grouped_product_child->is_sold_individually() ) {
|
||||
echo '<input type="checkbox" name="' . esc_attr( 'quantity[' . $grouped_product_child->get_id() . ']' ) . '" value="1" class="wc-grouped-product-add-to-cart-checkbox" />';
|
||||
} else {
|
||||
do_action( 'woocommerce_before_add_to_cart_quantity' );
|
||||
|
||||
woocommerce_quantity_input( array(
|
||||
'input_name' => 'quantity[' . $grouped_product_child->get_id() . ']',
|
||||
'input_value' => isset( $_POST['quantity'][ $grouped_product_child->get_id() ] ) ? wc_stock_amount( wc_clean( wp_unslash( $_POST['quantity'][ $grouped_product_child->get_id() ] ) ) ) : 0, // WPCS: CSRF ok, input var okay, sanitization ok.
|
||||
'min_value' => apply_filters( 'woocommerce_quantity_input_min', 0, $grouped_product_child ),
|
||||
'max_value' => apply_filters( 'woocommerce_quantity_input_max', $grouped_product_child->get_max_purchase_quantity(), $grouped_product_child ),
|
||||
) );
|
||||
|
||||
do_action( 'woocommerce_after_add_to_cart_quantity' );
|
||||
}
|
||||
|
||||
$value = ob_get_clean();
|
||||
break;
|
||||
case 'label':
|
||||
$value = '<label for="product-' . esc_attr( $grouped_product_child->get_id() ) . '">';
|
||||
$value .= $grouped_product_child->is_visible() ? '<a href="' . esc_url( apply_filters( 'woocommerce_grouped_product_list_link', $grouped_product_child->get_permalink(), $grouped_product_child->get_id() ) ) . '">' . $grouped_product_child->get_name() . '</a>' : $grouped_product_child->get_name();
|
||||
$value .= '</label>';
|
||||
break;
|
||||
case 'price':
|
||||
$value = $grouped_product_child->get_price_html() . wc_get_stock_html( $grouped_product_child );
|
||||
break;
|
||||
default:
|
||||
$value = '';
|
||||
break;
|
||||
}
|
||||
|
||||
echo '<td class="woocommerce-grouped-product-list-item__' . esc_attr( $column_id ) . '">' . apply_filters( 'woocommerce_grouped_product_list_column_' . $column_id, $value, $grouped_product_child ) . '</td>'; // WPCS: XSS ok.
|
||||
|
||||
do_action( 'woocommerce_grouped_product_list_after_' . $column_id, $grouped_product_child );
|
||||
}
|
||||
|
||||
echo '</tr>';
|
||||
}
|
||||
$post = $previous_post; // WPCS: override ok.
|
||||
setup_postdata( $post );
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" />
|
||||
|
||||
<?php if ( $quantites_required ) : ?>
|
||||
|
||||
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
|
||||
<div class="cart-btn cart-btn-box">
|
||||
<button type="submit" class="btn-one"><span class="txt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></span></button>
|
||||
</div>
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
|
||||
|
||||
<?php endif; ?>
|
||||
</form>
|
||||
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
|
||||
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
* Simple product add to cart
|
||||
|
||||
*
|
||||
|
||||
* 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
|
||||
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
|
||||
* the readme will list any important changes.
|
||||
|
||||
*
|
||||
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
|
||||
* @package WooCommerce/Templates
|
||||
|
||||
* @version 8.6.0
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
|
||||
|
||||
global $product;
|
||||
|
||||
|
||||
|
||||
if ( ! $product->is_purchasable() ) {
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
echo wc_get_stock_html( $product ); // WPCS: XSS ok.
|
||||
|
||||
|
||||
|
||||
if ( $product->is_in_stock() ) : ?>
|
||||
|
||||
|
||||
|
||||
<?php do_action( 'woocommerce_before_add_to_cart_form' ); ?>
|
||||
|
||||
|
||||
|
||||
<form class="cart" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data'>
|
||||
|
||||
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
|
||||
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
do_action( 'woocommerce_before_add_to_cart_quantity' );
|
||||
|
||||
|
||||
|
||||
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( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
|
||||
|
||||
) );
|
||||
|
||||
|
||||
|
||||
do_action( 'woocommerce_after_add_to_cart_quantity' );
|
||||
|
||||
?>
|
||||
|
||||
<div class="cart-btn cart-btn-box">
|
||||
|
||||
<button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="btn-one"><span class="txt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></span></button>
|
||||
|
||||
</div>
|
||||
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_form' ); ?>
|
||||
|
||||
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
/**
|
||||
* Single variation cart button
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
global $product;
|
||||
?>
|
||||
<div class="woocommerce-variation-add-to-cart variations_button">
|
||||
<?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>
|
||||
|
||||
<?php
|
||||
do_action( 'woocommerce_before_add_to_cart_quantity' );
|
||||
|
||||
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( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok.
|
||||
) );
|
||||
|
||||
do_action( 'woocommerce_after_add_to_cart_quantity' );
|
||||
?>
|
||||
<div class="cart-btn cart-btn-box">
|
||||
<button type="submit" class="btn-one"><span class="txt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></span></button>
|
||||
</div>
|
||||
<?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>
|
||||
|
||||
<input type="hidden" name="add-to-cart" value="<?php echo absint( $product->get_id() ); ?>" />
|
||||
<input type="hidden" name="product_id" value="<?php echo absint( $product->get_id() ); ?>" />
|
||||
<input type="hidden" name="variation_id" class="variation_id" value="0" />
|
||||
</div>
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* Related Products
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/related.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( $related_products ) : ?>
|
||||
|
||||
<section class="similar-products-style1 related-products">
|
||||
<div class="auto-container">
|
||||
<div class="top-title">
|
||||
<h2><?php esc_html_e( 'Related Products', 'thinkai' ); ?></h2>
|
||||
<div class="border-box"></div>
|
||||
</div>
|
||||
|
||||
<?php woocommerce_product_loop_start(); ?>
|
||||
<?php foreach ( $related_products as $related_product ) : ?>
|
||||
|
||||
<?php
|
||||
$post_object = get_post( $related_product->get_id() );
|
||||
|
||||
setup_postdata( $GLOBALS['post'] =& $post_object );
|
||||
|
||||
wc_get_template_part( 'content', 'product' ); ?>
|
||||
|
||||
<?php endforeach; ?>
|
||||
|
||||
<?php woocommerce_product_loop_end(); ?>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php endif;
|
||||
|
||||
wp_reset_postdata();
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* Single Product tabs
|
||||
*
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 3.8.0
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter tabs and allow third parties to add their own
|
||||
*
|
||||
* Each tab is an array containing title, callback and priority.
|
||||
* @see woocommerce_default_product_tabs()
|
||||
*/
|
||||
$tabs = apply_filters( 'woocommerce_product_tabs', array() );
|
||||
|
||||
if ( ! empty( $tabs ) ) : ?>
|
||||
|
||||
<div class="woocommerce-tabs wc-tabs-wrapper">
|
||||
<ul class="tabs wc-tabs">
|
||||
<?php foreach ( $tabs as $key => $tab ) : ?>
|
||||
<li class="<?php echo esc_attr( $key ); ?>_tab">
|
||||
<a href="#tab-<?php echo esc_attr( $key ); ?>"><?php echo apply_filters( 'woocommerce_product_' . $key . '_tab_title', esc_html( $tab['title'] ), $key ); ?></a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php foreach ( $tabs as $key => $tab ) : ?>
|
||||
<div class="panel entry-content wc-tab" id="tab-<?php echo esc_attr( $key ); ?>">
|
||||
<?php call_user_func( $tab['callback'], $key, $tab ); ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
/**
|
||||
* Single Product title
|
||||
*
|
||||
* This template can be overridden by copying it to yourtheme/woocommerce/single-product/title.php.
|
||||
*
|
||||
* HOWEVER, on occasion WooCommerce will need to update template files and you
|
||||
* (the theme developer) will need to copy the new files to your theme to
|
||||
* maintain compatibility. We try to do this as little as possible, but it does
|
||||
* happen. When this occurs the version of the template file will be bumped and
|
||||
* the readme will list any important changes.
|
||||
*
|
||||
* @see https://docs.woocommerce.com/document/template-structure/
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 1.6.4
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly.
|
||||
}
|
||||
|
||||
the_title( '<h2>', '</h2>' );
|
||||
188
wp-content/themes/thinkai/woocommerce/taxonomy-product_cat.php
Normal file
188
wp-content/themes/thinkai/woocommerce/taxonomy-product_cat.php
Normal file
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
/**
|
||||
* The Template for displaying product archives, including the main shop page which is a post type archive.
|
||||
*
|
||||
* Override this template by copying it to yourtheme/woocommerce/archive-product.php
|
||||
*
|
||||
* @author WooThemes
|
||||
* @package WooCommerce/Templates
|
||||
* @version 8.6.0
|
||||
*/
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
get_header();
|
||||
global $wp_query;
|
||||
$data = \THINKAI\Includes\Classes\Common::instance()->data( 'single' )->get();
|
||||
$layout = $data->get( 'layout' );
|
||||
$sidebar = $data->get( 'sidebar' );
|
||||
if (is_active_sidebar( $sidebar )) {$layout = 'right';} else{$layout = 'full';}
|
||||
$class = ( !$layout || $layout == 'full' ) ? 'col-xl-12 col-lg-12 col-md-12' : 'col-xl-12 col-lg-12 col-md-8';
|
||||
if ( class_exists( '\Elementor\Plugin' ) AND $data->get( 'tpl-type' ) == 'e' AND $data->get( 'tpl-elementor' ) ) {
|
||||
echo Elementor\Plugin::instance()->frontend->get_builder_content_for_display( $data->get( 'tpl-elementor' ) );
|
||||
} else {
|
||||
?>
|
||||
|
||||
<?php if ( class_exists( '\Elementor\Plugin' )): ?>
|
||||
<?php do_action( 'thinkai_banner', $data ); ?>
|
||||
<?php else: ?>
|
||||
<!--Start breadcrumb Style1-->
|
||||
<section class="breadcrumb-style1">
|
||||
<div id="particles-js"></div>
|
||||
<?php if( $data->get( 'banner' ) ){?><div class="breadcrumb-style1-bg" style="background-image: url(<?php echo esc_url( $data->get( 'banner' ) ); ?>);"></div><?php } ?>
|
||||
|
||||
<!--Start Scrolling Text Style6-->
|
||||
<?php
|
||||
$features_list = $data->get('features_list');
|
||||
if(!empty($features_list)){
|
||||
$features_list = explode("\n", ($features_list));
|
||||
?>
|
||||
<div class="scrolling-text-style6">
|
||||
<div class="inner">
|
||||
<ul class="clearfix marquee_mode">
|
||||
<?php foreach($features_list as $features): ?>
|
||||
<li data-hover="<?php echo wp_kses($features, true); ?>">
|
||||
<?php echo wp_kses($features, true); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
<!--End Scrolling Text Style6-->
|
||||
<div class="container">
|
||||
<div class="inner-content">
|
||||
<div class="title text-center">
|
||||
<h2><?php if( $data->get( 'title' ) ) echo wp_kses( $data->get( 'title' ), true ); else( the_title() ); ?></h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!--End breadcrumb Style1-->
|
||||
<?php endif; ?>
|
||||
|
||||
<!--Start Shop Page One-->
|
||||
<section class="shop-page-one">
|
||||
<div class="shop-page-one_inner">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'left' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
<!-- sidebar area -->
|
||||
<div class="content-side <?php echo esc_attr($class); ?> ">
|
||||
<div class="our-shop">
|
||||
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
|
||||
|
||||
<!--Sort By-->
|
||||
<div class="items-sorting clearfix">
|
||||
<div class="text">
|
||||
<?php woocommerce_result_count(); ?>
|
||||
</div>
|
||||
<div class="woocommerce-form">
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_shop_loop hook
|
||||
*
|
||||
* @hooked woocommerce_result_count - 20
|
||||
* @hooked woocommerce_catalog_ordering - 30
|
||||
*/
|
||||
do_action( 'woocommerce_before_shop_loop' );
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_before_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
|
||||
* @hooked woocommerce_breadcrumb - 20
|
||||
*/
|
||||
do_action( 'woocommerce_before_main_content' );
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_archive_description hook
|
||||
*
|
||||
* @hooked woocommerce_taxonomy_archive_description - 10
|
||||
* @hooked woocommerce_product_archive_description - 10
|
||||
*/
|
||||
do_action( 'woocommerce_archive_description' );
|
||||
?>
|
||||
|
||||
<?php if ( have_posts() ) : ?>
|
||||
|
||||
<?php woocommerce_product_loop_start(); ?>
|
||||
|
||||
<?php woocommerce_product_subcategories(); ?>
|
||||
|
||||
<?php while ( have_posts() ) : the_post(); ?>
|
||||
|
||||
<?php wc_get_template_part( 'content', 'product' ); ?>
|
||||
|
||||
<?php endwhile; // end of the loop. ?>
|
||||
|
||||
<?php woocommerce_product_loop_end(); ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_shop_loop hook
|
||||
*
|
||||
* @hooked woocommerce_pagination - 10
|
||||
*/
|
||||
do_action( 'woocommerce_after_shop_loop' );
|
||||
?>
|
||||
|
||||
<?php elseif ( ! woocommerce_product_subcategories( array( 'before' => woocommerce_product_loop_start( false ), 'after' => woocommerce_product_loop_end( false ) ) ) ) : ?>
|
||||
|
||||
<?php wc_get_template( 'loop/no-products-found.php' ); ?>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<?php
|
||||
/**
|
||||
* woocommerce_after_main_content hook
|
||||
*
|
||||
* @hooked woocommerce_output_content_wrapper_end - 10 (outputs closing divs for the content)
|
||||
*/
|
||||
do_action( 'woocommerce_after_main_content' );
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<!-- sidebar area -->
|
||||
<?php
|
||||
if ( $data->get( 'layout' ) == 'right' ) {
|
||||
do_action( 'thinkai_sidebar', $data );
|
||||
|
||||
/**
|
||||
* woocommerce_sidebar hook
|
||||
*
|
||||
* @hooked woocommerce_get_sidebar - 10
|
||||
*/
|
||||
do_action( 'woocommerce_sidebar' );
|
||||
}
|
||||
?>
|
||||
<!--Sidebar-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<?php
|
||||
}
|
||||
get_footer( 'shop' );
|
||||
Reference in New Issue
Block a user