Fix | checkout bugs

pull/23/head
„Andrei 3 months ago
parent 0e27ae936e
commit 2a1a06f625
  1. 24
      wp-content/themes/cosmopet/functions.php
  2. 14
      wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css
  3. 52
      wp-content/themes/cosmopet/modules/layout/assets/js/gp-form.js
  4. 12
      wp-content/themes/cosmopet/modules/layout/assets/js/gp-main.js
  5. 65
      wp-content/themes/cosmopet/static/assets/css/thankyou.css
  6. 14
      wp-content/themes/cosmopet/templates/shop/review-order.twig
  7. 45
      wp-content/themes/cosmopet/woocommerce/checkout/order-receipt.php
  8. 90
      wp-content/themes/cosmopet/woocommerce/checkout/thankyou copy.php
  9. 108
      wp-content/themes/cosmopet/woocommerce/checkout/thankyou.php

@ -439,16 +439,6 @@ require_once('modules/author/module-ajax-controller.php');
include_module('forms'); include_module('forms');
include_module('layout'); include_module('layout');
add_action('wp_enqueue_scripts', 'disable_woocommerce_css', 999);
function disable_woocommerce_css() {
wp_dequeue_style('woocommerce-general');
wp_dequeue_style('woocommerce-layout');
wp_dequeue_style('woocommerce-smallscreen');
wp_dequeue_style('woocommerce_frontend_styles');
wp_dequeue_style('woocommerce_fancybox_styles');
wp_dequeue_style('woocommerce_chosen_styles');
wp_dequeue_style('woocommerce_prettyPhoto_css');
}
class WooProduct extends Timber\Post { class WooProduct extends Timber\Post {
@ -1191,3 +1181,17 @@ function custom_redirect_cart_page() {
exit; exit;
} }
} }
add_action('wp_enqueue_scripts', 'remove_woocommerce_styles_on_checkout', 9999);
function remove_woocommerce_styles_on_checkout() {
// Проверяем, что мы на странице чекаута
if (function_exists('is_checkout') && is_checkout() && !is_order_received_page()) {
wp_deregister_style('woocommerce-layout');
wp_deregister_style('woocommerce-smallscreen');
wp_deregister_style('woocommerce-general');
// Дополнительно: отключить другие стили WooCommerce
wp_dequeue_style('select2');
wp_deregister_style('select2');
}
}

@ -175,11 +175,11 @@ body {
height: 96px; height: 96px;
width: 100%; width: 100%;
resize: none; resize: none;
background: var(--main_white); background: var(--main_white) !important;
border: 1px solid var(--placeholder); border: 1px solid var(--placeholder) !important;;
padding: 12px 16px; padding: 12px 16px;
border-radius: 20px; border-radius: 20px;
color: var(--main_black); color: var(--main_black) !important;
font-size: 20px; font-size: 20px;
font-weight: 400; font-weight: 400;
line-height: 24px; line-height: 24px;
@ -1878,16 +1878,16 @@ textarea{
border-radius: 20px; border-radius: 20px;
padding: 12px 16px; padding: 12px 16px;
border: 1px solid var(--text-black); border: 1px solid var(--text-black) !important;
background: var(--background-white); background: var(--background-white) !important;
font-family: var(--font-family); font-family: var(--font-family) !important;
font-weight: 400; font-weight: 400;
font-size: 20px; font-size: 20px;
line-height: 120%; line-height: 120%;
color: var(--text-black); color: var(--text-black) !important;
} }
.form__input::placeholder{ .form__input::placeholder{
color: var(--text-grey); color: var(--text-grey);

@ -171,38 +171,50 @@ function remoteControl(main, button) {
let mains = document.querySelectorAll(main); let mains = document.querySelectorAll(main);
mains.forEach(main => { mains.forEach(main => {
let subjectClass = main.dataset.content, let subjectClass = main.dataset.content;
subject = document.querySelector(`.${subjectClass}`), if (!subjectClass) return; // Skip if no data-content attribute
buttons = Array.from(main.querySelectorAll(button));
main.addEventListener('click', function (eventMain) { let subject = document.querySelector(`.${subjectClass}`);
setTimeout(() => { if (!subject) {
let indexActive = buttons.findIndex((button, index) => { console.warn(`Element with class "${subjectClass}" not found`);
if (button.classList.contains('active')) { return; // Skip if subject element doesn't exist
return true;
} }
let buttons = Array.from(main.querySelectorAll(button));
if (!buttons.length) return; // Skip if no buttons found
main.addEventListener('click', function(eventMain) {
setTimeout(() => {
let indexActive = buttons.findIndex(button => {
return button.classList.contains('active');
}); });
if(subject.children[indexActive].classList.contains('active')){
return ; // Check if subject has children and index is valid
if (!subject.children.length || indexActive === -1 || indexActive >= subject.children.length) {
return;
}
let activeItem = subject.querySelector('.remote-control__item.active');
if (activeItem) {
activeItem.classList.remove('active');
}
if (subject.children[indexActive].classList.contains('active')) {
return;
} }
subject.querySelector('.remote-control__item.active').classList.remove('active');
subject.children[indexActive].classList.add('active'); subject.children[indexActive].classList.add('active');
let mandatorys = subject.querySelectorAll('.mandatory'); let mandatorys = subject.querySelectorAll('.mandatory');
if (mandatorys.length) {
mandatorys.forEach(mandatory => { mandatorys.forEach(mandatory => {
if (mandatory.required) { mandatory.required = !mandatory.required;
mandatory.required = false; });
}else{
mandatory.required = true;
} }
})
}, 0); }, 0);
}) });
}) });
} }
formCheck('.modal-form__content', 'input[type=submit]'); formCheck('.modal-form__content', 'input[type=submit]');
formCheck('.modal-map__form', 'input[type=submit]'); formCheck('.modal-map__form', 'input[type=submit]');

@ -415,3 +415,15 @@ if (document.querySelector('.header').classList.contains('white')) {
// scroll // scroll
jQuery(document).ready(function($) {
jQuery('.popup-wrap').on('click', function(e) {
if (e.target === this) {
$(this).closest('.modalProfile').removeClass('active');
}
});
$('.close-btn').on('click', function(e) {
$('.modalProfile').removeClass('active');
});
});

@ -0,0 +1,65 @@
/* Основные стили страницы */
.woocommerce-order {
max-width: 800px;
margin: 2rem auto;
padding: 2rem;
background: #fff;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
border-radius: 8px;
}
/* Заголовок */
.woocommerce-order h2.woocommerce-order-details__title,
.woocommerce-order h2.woocommerce-column__title {
color: #333;
border-bottom: 2px solid #eee;
padding-bottom: 10px;
}
/* Детали заказа */
.woocommerce-order-overview {
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 2rem;
}
.woocommerce-order-overview li {
flex: 1;
min-width: 200px;
background: #f9f9f9;
padding: 1rem;
border-radius: 4px;
}
/* Кнопка "Вернуться в магазин" */
.woocommerce-button.button.wc-backward {
background: #4CAF50;
color: white;
padding: 10px 20px;
border-radius: 4px;
text-decoration: none;
display: inline-block;
margin-top: 20px;
}
.woocommerce-button.button.wc-backward:hover {
background: #3e8e41;
}
@media (max-width: 768px) {
.woocommerce-order {
padding: 1rem;
margin: 1rem;
}
.woocommerce-order-overview li {
min-width: 100%;
}
.woocommerce-order-details,
.woocommerce-customer-details {
margin-top: 1rem;
}
}

@ -1,23 +1,23 @@
<table class="shop_table woocommerce-checkout-review-order-table"> <table class="shop_table woocommerce-checkout-review-order-table">
<tfoot> <tfoot>
<tr class="order-your-calculation__item"> <tr class="order-your-calculation__item">
<th class="order-your-calculation__title">{{ pll_e('Товары') }}</th> <th class="order-your-calculation__title">{{ fn('pll_e', 'Товары') }}</th>
<td class="order-your-calculation__value order-your-calculation__value--price">{{ fn('wc_cart_totals_subtotal_html') }}</td> <td class="order-your-calculation__value order-your-calculation__value--price">{{ fn('wc_cart_totals_subtotal_html') }}</td>
</tr> </tr>
{% for code, coupon in fn('WC').cart.get_coupons() %} {% for code, coupon in fn('WC').cart.get_coupons() %}
<tr class="order-your-calculation__item cart-discount coupon-{{ code|sanitize_title|e('html_attr') }}"> <tr class="order-your-calculation__item cart-discount coupon-{{ code }}">
<th class="order-your-calculation__title">{{ fn('wc_cart_totals_coupon_label', coupon) }}</th> <th class="order-your-calculation__title">{{ fn('wc_cart_totals_coupon_label', coupon) }}</th>
<td class="order-your-calculation__value order-your-calculation__value--price order-your-calculation__value--discount">{{ fn('wc_cart_totals_coupon_html', coupon) }}</td> <td class="order-your-calculation__value order-your-calculation__value--price order-your-calculation__value--discount">{{ fn('wc_cart_totals_coupon_html', coupon) }}</td>
</tr> </tr>
{% endfor %} {% endfor %}
{% if fn('WC').cart.needs_shipping() and fn('WC').cart.show_shipping() %} {% if fn('WC').cart.needs_shipping() and fn('WC').cart.show_shipping() %}
{{ do_action('woocommerce_review_order_before_shipping') }} {{ action('woocommerce_review_order_before_shipping') }}
{{ fn('wc_cart_totals_shipping_html') }} {{ fn('wc_cart_totals_shipping_html') }}
{{ do_action('woocommerce_review_order_after_shipping') }} {{ action('woocommerce_review_order_after_shipping') }}
{% endif %} {% endif %}
<tr class="order-your-calculation__item"> <tr class="order-your-calculation__item">
@ -40,7 +40,7 @@
{% if fn('wc_tax_enabled') and not fn('WC').cart.display_prices_including_tax() %} {% if fn('wc_tax_enabled') and not fn('WC').cart.display_prices_including_tax() %}
{% if 'itemized' == fn('get_option', 'woocommerce_tax_total_display') %} {% if 'itemized' == fn('get_option', 'woocommerce_tax_total_display') %}
{% for code, tax in fn('WC').cart.get_tax_totals() %} {% for code, tax in fn('WC').cart.get_tax_totals() %}
<tr class="tax-rate tax-rate-{{ code|sanitize_title|e('html_attr') }}"> <tr class="tax-rate tax-rate-{{ code }}">
<th>{{ tax.label|e }}</th> <th>{{ tax.label|e }}</th>
<td>{{ tax.formatted_amount|raw }}</td> <td>{{ tax.formatted_amount|raw }}</td>
</tr> </tr>
@ -53,7 +53,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{{ do_action('woocommerce_review_order_before_order_total') }} {{ action('woocommerce_review_order_before_order_total') }}
<tr class="order-your-calculation__line"></tr> <tr class="order-your-calculation__line"></tr>
<tr class="order-your-calculation__item"> <tr class="order-your-calculation__item">
@ -61,6 +61,6 @@
<td class="order-your-calculation__result order-your-calculation__value--price">{{ fn('wc_cart_totals_order_total_html') }}</td> <td class="order-your-calculation__result order-your-calculation__value--price">{{ fn('wc_cart_totals_order_total_html') }}</td>
</tr> </tr>
{{ do_action('woocommerce_review_order_after_order_total') }} {{ action('woocommerce_review_order_after_order_total') }}
</tfoot> </tfoot>
</table> </table>

@ -1,19 +1,46 @@
<?php <?php
/** /**
* Checkout Form * Checkout Order Receipt Template
* *
* @see https://docs.woocommerce.com/document/template-structure/ * This template can be overridden by copying it to yourtheme/woocommerce/checkout/order-receipt.php.
* @package WooCommerce/Templates *
* @version 3.5.0 * 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://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 3.2.0
*/ */
if (!defined('ABSPATH')) { if ( ! defined( 'ABSPATH' ) ) {
exit; exit;
} }
?>
// Get Timber context <ul class="order_details">
$context = Timber::context(); <li class="order">
<?php esc_html_e( 'Order number:', 'woocommerce' ); ?>
<strong><?php echo esc_html( $order->get_order_number() ); ?></strong>
</li>
<li class="date">
<?php esc_html_e( 'Date:', 'woocommerce' ); ?>
<strong><?php echo esc_html( wc_format_datetime( $order->get_date_created() ) ); ?></strong>
</li>
<li class="total">
<?php esc_html_e( 'Total:', 'woocommerce' ); ?>
<strong><?php echo wp_kses_post( $order->get_formatted_order_total() ); ?></strong>
</li>
<?php if ( $order->get_payment_method_title() ) : ?>
<li class="method">
<?php esc_html_e( 'Payment method:', 'woocommerce' ); ?>
<strong><?php echo wp_kses_post( $order->get_payment_method_title() ); ?></strong>
</li>
<?php endif; ?>
</ul>
<?php do_action( 'woocommerce_receipt_' . $order->get_payment_method(), $order->get_id() ); ?>
// Render the Twig template <div class="clear"></div>
Timber::render('shop/review-order.twig', $context);

@ -1,90 +0,0 @@
<?php
/**
* Thankyou page
*
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/thankyou.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://woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 8.1.0
*
* @var WC_Order $order
*/
defined( 'ABSPATH' ) || exit;
?>
<div class="woocommerce-order">
<?php
if ( $order ) :
do_action( 'woocommerce_before_thankyou', $order->get_id() );
?>
<?php if ( $order->has_status( 'failed' ) ) : ?>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed"><?php esc_html_e( 'Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction. Please attempt your purchase again.', 'woocommerce' ); ?></p>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed-actions">
<a href="<?php echo esc_url( $order->get_checkout_payment_url() ); ?>" class="button pay"><?php esc_html_e( 'Pay', 'woocommerce' ); ?></a>
<?php if ( is_user_logged_in() ) : ?>
<a href="<?php echo esc_url( wc_get_page_permalink( 'myaccount' ) ); ?>" class="button pay"><?php esc_html_e( 'My account', 'woocommerce' ); ?></a>
<?php endif; ?>
</p>
<?php else : ?>
<?php wc_get_template( 'checkout/order-received.php', array( 'order' => $order ) ); ?>
<ul class="woocommerce-order-overview woocommerce-thankyou-order-details order_details">
<li class="woocommerce-order-overview__order order">
<?php esc_html_e( 'Order number:', 'woocommerce' ); ?>
<strong><?php echo $order->get_order_number(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<li class="woocommerce-order-overview__date date">
<?php esc_html_e( 'Date:', 'woocommerce' ); ?>
<strong><?php echo wc_format_datetime( $order->get_date_created() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( is_user_logged_in() && $order->get_user_id() === get_current_user_id() && $order->get_billing_email() ) : ?>
<li class="woocommerce-order-overview__email email">
<?php esc_html_e( 'Email:', 'woocommerce' ); ?>
<strong><?php echo $order->get_billing_email(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php endif; ?>
<li class="woocommerce-order-overview__total total">
<?php esc_html_e( 'Total:', 'woocommerce' ); ?>
<strong><?php echo $order->get_formatted_order_total(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( $order->get_payment_method_title() ) : ?>
<li class="woocommerce-order-overview__payment-method method">
<?php esc_html_e( 'Payment method:', 'woocommerce' ); ?>
<strong><?php echo wp_kses_post( $order->get_payment_method_title() ); ?></strong>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
<?php do_action( 'woocommerce_thankyou_' . $order->get_payment_method(), $order->get_id() ); ?>
<?php do_action( 'woocommerce_thankyou', $order->get_id() ); ?>
<?php else : ?>
<?php wc_get_template( 'checkout/order-received.php', array( 'order' => false ) ); ?>
<?php endif; ?>
</div>

@ -1,108 +0,0 @@
<?php
/**
* Thankyou page
*
* This template can be overridden by copying it to yourtheme/woocommerce/checkout/thankyou.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.7.0
*/
defined( 'ABSPATH' ) || exit;
$wrapper_classes = '';
if ( woodmart_get_opt( 'thank_you_page_extra_content' ) ) {
$wrapper_classes .= ' wd-with-extra-content';
}
?>
<div class="woocommerce-order<?php echo esc_attr( $wrapper_classes ); ?>">
<?php if ( $order ) : ?>
<?php do_action( 'woocommerce_before_thankyou', $order->get_id() ); ?>
<?php if ( $order->has_status( 'failed' ) ) : ?>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed"><?php esc_html_e( 'Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction. Please attempt your purchase again.', 'woocommerce' ); ?></p>
<p class="woocommerce-notice woocommerce-notice--error woocommerce-thankyou-order-failed-actions">
<a href="<?php echo esc_url( $order->get_checkout_payment_url() ); ?>" class="button pay"><?php esc_html_e( 'Pay', 'woocommerce' ); ?></a>
<?php if ( is_user_logged_in() ) : ?>
<a href="<?php echo esc_url( wc_get_page_permalink( 'myaccount' ) ); ?>" class="button pay"><?php esc_html_e( 'My account', 'woocommerce' ); ?></a>
<?php endif; ?>
</p>
<?php else : ?>
<?php if ( woodmart_get_opt( 'thank_you_page_extra_content' ) || woodmart_get_opt( 'thank_you_page_html_block' ) ) : ?>
<div class="wd-order-extra-content">
<?php if ( 'text' === woodmart_get_opt( 'thank_you_page_content_type', 'text' ) ) : ?>
<?php echo do_shortcode( woodmart_get_opt( 'thank_you_page_extra_content' ) ); ?>
<?php else : ?>
<?php echo woodmart_get_html_block( woodmart_get_opt( 'thank_you_page_html_block' ) ); ?>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if ( woodmart_get_opt( 'thank_you_page_default_content' ) ) : ?>
<p class="woocommerce-notice woocommerce-notice--success woocommerce-thankyou-order-received"><?php echo apply_filters( 'woocommerce_thankyou_order_received_text', esc_html__( 'Thank you. Your order has been received.', 'woocommerce' ), $order ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>
<ul class="woocommerce-order-overview woocommerce-thankyou-order-details order_details">
<li class="woocommerce-order-overview__order order">
<?php esc_html_e( 'Order number:', 'woocommerce' ); ?>
<strong><?php echo $order->get_order_number(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<li class="woocommerce-order-overview__date date">
<?php esc_html_e( 'Date:', 'woocommerce' ); ?>
<strong><?php echo wc_format_datetime( $order->get_date_created() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( is_user_logged_in() && $order->get_user_id() === get_current_user_id() && $order->get_billing_email() ) : ?>
<li class="woocommerce-order-overview__email email">
<?php esc_html_e( 'Email:', 'woocommerce' ); ?>
<strong><?php echo $order->get_billing_email(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php endif; ?>
<li class="woocommerce-order-overview__total total">
<?php esc_html_e( 'Total:', 'woocommerce' ); ?>
<strong><?php echo $order->get_formatted_order_total(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></strong>
</li>
<?php if ( $order->get_payment_method_title() ) : ?>
<li class="woocommerce-order-overview__payment-method method">
<?php esc_html_e( 'Payment method:', 'woocommerce' ); ?>
<strong><?php echo wp_kses_post( $order->get_payment_method_title() ); ?></strong>
</li>
<?php endif; ?>
</ul>
<?php endif; ?>
<?php endif; ?>
<?php if ( woodmart_get_opt( 'thank_you_page_default_content' ) ) : ?>
<?php do_action( 'woocommerce_thankyou_' . $order->get_payment_method(), $order->get_id() ); ?>
<?php do_action( 'woocommerce_thankyou', $order->get_id() ); ?>
<?php endif; ?>
<?php else : ?>
<p class="woocommerce-notice woocommerce-notice--success woocommerce-thankyou-order-received"><?php echo apply_filters( 'woocommerce_thankyou_order_received_text', esc_html__( 'Thank you. Your order has been received.', 'woocommerce' ), null ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></p>
<?php endif; ?>
</div>
Loading…
Cancel
Save