diff --git a/wp-content/themes/cosmopet/functions.php b/wp-content/themes/cosmopet/functions.php index 0c95761..f0953ab 100644 --- a/wp-content/themes/cosmopet/functions.php +++ b/wp-content/themes/cosmopet/functions.php @@ -595,4 +595,5 @@ register_sidebar( array( ) ); -add_filter( 'woocommerce_price_trim_zeros', '__return_true' ); \ No newline at end of file +add_filter( 'woocommerce_price_trim_zeros', '__return_true' ); + diff --git a/wp-content/themes/cosmopet/global-functions/multilang-functions.php b/wp-content/themes/cosmopet/global-functions/multilang-functions.php index e69de29..7bf81c6 100644 --- a/wp-content/themes/cosmopet/global-functions/multilang-functions.php +++ b/wp-content/themes/cosmopet/global-functions/multilang-functions.php @@ -0,0 +1,43 @@ +скидку!', 'Узнайте о нас больше и получите скидку!'); + pll_register_string ('Это миф!', 'Это миф!'); + pll_register_string ('Это правда!', 'Это правда!'); + pll_register_string ('Правда', 'Правда'); + pll_register_string ('Миф', 'Миф'); + pll_register_string ('Далее', 'Далее'); + pll_register_string ('ваш результат', 'ваш результат'); + pll_register_string ('Скопировать', 'Скопировать'); + pll_register_string ('Скопировано', 'Скопировано'); + pll_register_string ('В магазин', 'В магазин'); + pll_register_string ('Наш блог', 'Наш блог'); + pll_register_string ('Новости рынка кормов и экологии, полезные статьи о здоровье домашних животных', 'Новости рынка кормов и экологии, полезные статьи о здоровье домашних животных'); + pll_register_string ('ЭТАПЫ ПРОИЗВОД­СТВА', 'ЭТАПЫ ПРОИЗВОД­СТВА'); + pll_register_string ('Этапы производс­тва корма', 'Этапы производс­тва корма'); + pll_register_string ('Все статьи', 'Все статьи'); + pll_register_string ('Узнать больше', 'Узнать больше'); +}); + diff --git a/wp-content/themes/cosmopet/modules/layout/assets/js/_gp-function.js b/wp-content/themes/cosmopet/modules/layout/assets/js/_gp-function.js index d76ad0b..e69de29 100644 --- a/wp-content/themes/cosmopet/modules/layout/assets/js/_gp-function.js +++ b/wp-content/themes/cosmopet/modules/layout/assets/js/_gp-function.js @@ -1,166 +0,0 @@ -// 'use strict'; - -// // Глобальные переменные для управления состоянием -// let currentModalContent = null; - -// function modalOpen(buttonElement, contentElement) { -// const modal = document.querySelector('.modal'); -// const aside = document.querySelector('.modal__aside'); -// const elements = document.querySelectorAll(buttonElement); -// const device = window.screen.width; - -// // Обработчик закрытия по клику на оверлей -// modal.addEventListener('click', function(e) { -// if (e.target === modal && currentModalContent) { -// closeModal(currentModalContent); -// } -// }); - -// // Обработчик закрытия по Escape -// document.addEventListener('keydown', function(e) { -// if (e.key === 'Escape' && currentModalContent) { -// closeModal(currentModalContent); -// } -// }); - -// elements.forEach(e => { -// e.addEventListener('click', function() { -// const content = document.querySelector(contentElement); -// currentModalContent = content; - -// // Сброс стилей перед открытием -// resetModalStyles(); - -// modal.classList.add('active'); -// content.classList.add('active'); - -// const width = content.clientWidth; - -// setTimeout(() => { -// if (device <= 720) { -// aside.style.width = `${device}px`; -// } else { -// aside.style.width = `${width}px`; -// } -// content.style.opacity = '1'; -// content.style.filter = 'blur(0)'; -// }, 10); -// }); -// }); -// } - -// function modalClose(buttonElement) { -// const elements = document.querySelectorAll(buttonElement); - -// elements.forEach(e => { -// e.addEventListener('click', function() { -// if (currentModalContent) { -// closeModal(currentModalContent); -// } -// }); -// }); -// } - -// function closeModal(contentElement) { -// const modal = document.querySelector('.modal'); -// const aside = document.querySelector('.modal__aside'); - -// aside.style.width = '0'; -// contentElement.style.opacity = '0'; -// contentElement.style.filter = 'blur(10px)'; - -// setTimeout(() => { -// contentElement.classList.remove('active'); -// modal.classList.remove('active'); -// currentModalContent = null; -// }, 300); -// } - -// function resetModalStyles() { -// const allModals = document.querySelectorAll('.modal__item'); - -// allModals.forEach(modal => { -// modal.style.opacity = ''; -// modal.style.filter = ''; -// modal.classList.remove('active'); -// }); - -// document.querySelector('.modal__aside').style.width = ''; -// } -// function toggleOpenX(mainElement, buttonElement ,heightElement, contentElement, close) { -// let elements = document.querySelectorAll(mainElement); - -// elements.forEach(e => { -// let thisMainElement = e, -// thisButtonElement = e.querySelector(buttonElement), -// thisHeightElement = e.querySelector(heightElement), -// thisContentElement = e.querySelector(contentElement); - -// thisButtonElement.onclick = function (e) { -// let height = thisHeightElement.clientHeight; - -// if (close == true && !thisMainElement.classList.contains('active')) { -// elements.forEach(e => { -// if (e.classList.contains('active')) { -// e.classList.remove('active'); -// e.querySelector(contentElement).style.height = null -// } -// }) -// } - -// if (!thisMainElement.classList.contains('active')) { -// thisContentElement.style.height = `${height}px`; -// thisMainElement.classList.add('active'); -// }else{ -// thisContentElement.style.height = null; -// thisMainElement.classList.remove('active'); -// } -// } - -// }); -// } - -// function toggleHeader(button, content, blockheight, removeBlock, removeClass) { -// let thisButton = document.querySelector(button), -// thisContent = document.querySelector(content), -// thisRemoveBlock = document.querySelector(removeBlock) || '', -// thisBlockheight = document.querySelector(blockheight); - -// thisButton.onclick = function () { -// let height = thisBlockheight.clientHeight; - -// if (!thisContent.classList .contains('open')) { -// thisContent.style.height = `${height}px`; -// thisContent.classList .add('open'); - -// if (removeBlock) { -// thisRemoveBlock.classList.remove(removeClass); -// } -// }else{ -// thisContent.style.height = null; -// thisContent.classList .remove('open'); - -// if (removeBlock) { -// if (window.scrollY <= 25) { -// thisRemoveBlock.classList.add(removeClass); -// } -// } -// } -// } -// } - -// function modalFormOpen(formOrNotification) { -// let buttons = document.querySelectorAll(formOrNotification), -// modal = document.querySelector('.modal'); - -// buttons.forEach(button => { -// button.onclick = function (eventButton) { -// let classOpenForm = button.dataset.form, -// form = modal.querySelector(`.${classOpenForm}`); - -// form.classList.add('active'); -// modal.classList.add('active'); -// } -// }) -// } -// // function \ No newline at end of file diff --git a/wp-content/themes/cosmopet/modules/layout/module-controller.php b/wp-content/themes/cosmopet/modules/layout/module-controller.php index e3a0b36..08e4f89 100644 --- a/wp-content/themes/cosmopet/modules/layout/module-controller.php +++ b/wp-content/themes/cosmopet/modules/layout/module-controller.php @@ -3,4 +3,5 @@ include_module('header'); include_component('shop', 'cart'); +include_module('shop'); include_module('footer'); diff --git a/wp-content/themes/cosmopet/modules/shop/components/cart/assets/js/cart.js b/wp-content/themes/cosmopet/modules/shop/components/cart/assets/js/cart.js index bcef82e..2baf238 100644 --- a/wp-content/themes/cosmopet/modules/shop/components/cart/assets/js/cart.js +++ b/wp-content/themes/cosmopet/modules/shop/components/cart/assets/js/cart.js @@ -18,7 +18,7 @@ jQuery(document).ready(function($) { }); // Увеличение количества - $(document).on('click', '.counter__button.plus', function(e) { + $(document).on('click', '.modal__basket .counter__button.plus', function(e) { e.preventDefault(); const key = $(this).data('key'); const input = $(this).siblings('.counter__input'); @@ -27,7 +27,7 @@ jQuery(document).ready(function($) { }); // Уменьшение количества - $(document).on('click', '.counter__button.minus', function(e) { + $(document).on('click', '.modal__basket .counter__button.minus', function(e) { e.preventDefault(); const key = $(this).data('key'); const input = $(this).siblings('.counter__input'); diff --git a/wp-content/themes/cosmopet/modules/shop/components/cart/component-controller.php b/wp-content/themes/cosmopet/modules/shop/components/cart/component-controller.php index bfad3cb..e69de29 100644 --- a/wp-content/themes/cosmopet/modules/shop/components/cart/component-controller.php +++ b/wp-content/themes/cosmopet/modules/shop/components/cart/component-controller.php @@ -1,8 +0,0 @@ - 'Код купона не указан.' ) ); + } + + // Применение купона + $applied = WC()->cart->apply_coupon( $coupon_code ); + + if ( $applied ) { + wp_send_json_success(); + } else { + wp_send_json_error( array( 'message' => 'Купон не применён. Проверьте код.' ) ); + } +} + + +/** + * Обработчик AJAX для обновления количества товара в корзине + */ +add_action('wp_ajax_update_cart_quantity', 'update_cart_quantity_handler'); +add_action('wp_ajax_nopriv_update_cart_quantity', 'update_cart_quantity_handler'); + +function update_cart_quantity_handler() { + if (!isset($_POST['cart_item_key']) || !isset($_POST['quantity'])) { + wp_send_json_error('Недостаточно данных'); + return; + } + + $cart_item_key = sanitize_text_field($_POST['cart_item_key']); + $quantity = intval($_POST['quantity']); + + if ($quantity <= 0) { + wp_send_json_error('Некорректное количество'); + return; + } + + $cart = WC()->cart; + $cart_item = $cart->get_cart_item($cart_item_key); + + if (!$cart_item) { + wp_send_json_error('Товар не найден в корзине'); + return; + } + + $updated = $cart->set_quantity($cart_item_key, $quantity); + + if ($updated) { + wp_send_json_success(); + } else { + wp_send_json_error('Не удалось обновить количество'); + } +} + +/** + * Обработчик AJAX для восстановления товара в корзине + */ +add_action('wp_ajax_restore_cart_item', 'restore_cart_item_handler'); +add_action('wp_ajax_nopriv_restore_cart_item', 'restore_cart_item_handler'); + +function restore_cart_item_handler() { + if (!isset($_POST['product_id']) || !isset($_POST['quantity'])) { + wp_send_json_error('Недостаточно данных'); + return; + } + + $product_id = intval($_POST['product_id']); + $variation_id = isset($_POST['variation_id']) ? intval($_POST['variation_id']) : 0; + $quantity = intval($_POST['quantity']); + + if ($quantity <= 0) { + wp_send_json_error('Некорректное количество'); + return; + } + + $cart = WC()->cart; + $cart_item_key = $cart->add_to_cart($product_id, $quantity, $variation_id); + + if ($cart_item_key) { + wp_send_json_success(); + } else { + wp_send_json_error('Не удалось восстановить товар'); + } +} + +/** + * Обработчик AJAX для получения фрагментов корзины + */ +add_action('wp_ajax_get_cart_fragment', 'get_cart_fragment_handler'); +add_action('wp_ajax_nopriv_get_cart_fragment', 'get_cart_fragment_handler'); + +function get_cart_fragment_handler() { + ob_start(); + Timber::render('shop/cart-contents.twig', Timber::context()); + $contents = ob_get_clean(); + + $response = array( + 'contents' => $contents, + 'total' => WC()->cart->get_cart_total(), + 'count' => WC()->cart->get_cart_contents_count() + ); + + wp_send_json_success($response); +} + + +/** + * Инициализация WooCommerce AJAX + */ +add_action('wp_enqueue_scripts', 'enqueue_woocommerce_ajax_scripts'); +function enqueue_woocommerce_ajax_scripts() { + wp_localize_script('jquery', 'woocommerce_params', array( + 'ajax_url' => admin_url('admin-ajax.php'), + 'currency_symbol' => get_woocommerce_currency_symbol(), + 'currency_format' => str_replace(array('%1$s', '%2$s'), array('%s', '%v'), get_woocommerce_price_format()), + 'i18n_restore_item' => pll_e('Восстановить', 'woocommerce') + )); +} + +add_action('wp_ajax_remove_cart_item', 'handle_remove_cart_item'); +add_action('wp_ajax_nopriv_remove_cart_item', 'handle_remove_cart_item'); + +function handle_remove_cart_item() { + if (!isset($_POST['cart_item_key'])) { + wp_send_json_error('Не указан ключ элемента корзины'); + return; + } + + $cart_item_key = sanitize_text_field($_POST['cart_item_key']); + $cart = WC()->cart; + + if ($cart->remove_cart_item($cart_item_key)) { + wp_send_json_success(); + } else { + wp_send_json_error('Не удалось удалить товар из корзины'); + } +} \ No newline at end of file diff --git a/wp-content/themes/cosmopet/modules/shop/module-controller.php b/wp-content/themes/cosmopet/modules/shop/module-controller.php index e69de29..329d624 100644 --- a/wp-content/themes/cosmopet/modules/shop/module-controller.php +++ b/wp-content/themes/cosmopet/modules/shop/module-controller.php @@ -0,0 +1,323 @@ + 'text', + 'label' => __('Имя', 'woocommerce'), + 'placeholder' => __('Ваше имя', 'woocommerce'), + 'required' => true, + 'class' => array('form-row-wide'), + 'priority' => 10, + ); + $fields['billing']['billing_last_name'] = array( + 'type' => 'text', + 'label' => __('Фамилия', 'woocommerce'), + 'placeholder' => __('Ваша фамилия', 'woocommerce'), + 'required' => true, + 'class' => array('form-row-wide'), + 'priority' => 10, + ); + $fields['billing']['billing_email'] = array( + 'type' => 'email', + 'label' => __('E-mail', 'woocommerce'), + 'placeholder' => __('Начните вводить ваш email', 'woocommerce'), + 'required' => true, + 'class' => array('form-row-wide'), + 'priority' => 20, + ); + $fields['billing']['billing_phone'] = array( + 'type' => 'tel', + 'label' => __('Телефон', 'woocommerce'), + 'placeholder' => __('+7 ___ ___ ____', 'woocommerce'), + 'required' => true, + 'class' => array('form-row-wide'), + 'priority' => 30, + ); + $fields['billing']['billing_city'] = array( + 'type' => 'text', + 'label' => __('Населенный пункт', 'woocommerce'), + 'placeholder' => __('Ваш город', 'woocommerce'), + 'required' => true, + 'class' => array('form-row-wide'), + 'priority' => 40, + ); + + $fields['billing']['billing_address_1'] = array( + 'type' => 'text', + 'label' => __('Адрес', 'woocommerce'), + 'placeholder' => __('Адрес', 'woocommerce'), + 'required' => false, + 'class' => array('visually-hidden'), + 'priority' => 40, + ); + $fields['billing']['billing_address_2'] = array( + 'type' => 'text', + 'label' => __('Адрес 2', 'woocommerce'), + 'placeholder' => __('Адрес 2', 'woocommerce'), + 'required' => false, + 'class' => array('visually-hidden'), + 'priority' => 40, + ); + + return $fields; +} +// remove_action( 'woocommerce_review_order_before_payment', 'woocommerce_review_order_shipping' ); + +add_action( 'init', function() { + update_option( 'woocommerce_enable_coupons', 'yes' ); // Включение купонов +} ); + +add_filter( 'woocommerce_available_payment_gateways', 'set_default_payment_gateway' ); + +function set_default_payment_gateway( $available_gateways ) { + if ( is_cart() || is_checkout() ) { + // Устанавливаем способ оплаты по умолчанию + $default_payment_gateway = 'tbank'; // ID способа оплаты, например 'cod' для "наличными при доставке" + + // Проверяем, доступен ли этот способ оплаты + if ( isset( $available_gateways[ $default_payment_gateway ] ) ) { + foreach ( $available_gateways as $gateway_id => $gateway ) { + // Оставляем только выбранный способ оплаты + if ( $gateway_id !== $default_payment_gateway ) { + unset( $available_gateways[ $gateway_id ] ); + } + } + } + } + + return $available_gateways; +} + +add_filter( 'woocommerce_checkout_terms_and_conditions_checkbox_enabled', '__return_false' ); +add_filter( 'woocommerce_checkout_terms_is_required', '__return_false' ); +remove_action( 'woocommerce_checkout_before_terms_and_conditions', 'wc_checkout_privacy_policy_text', 20 ); +remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_terms_and_conditions_page_content', 30 ); +remove_action( 'woocommerce_checkout_after_terms_and_conditions', 'wc_privacy_policy_text', 20 ); + +add_action( 'woocommerce_checkout_process', 'remove_terms_validation' ); + +function remove_terms_validation() { + remove_action( 'woocommerce_checkout_process', 'woocommerce_checkout_terms_and_conditions' ); +} + +add_filter( 'woocommerce_order_button_html', 'custom_checkout_button_classes' ); + +function custom_checkout_button_classes( $button ) { + // Заменяем стандартные классы + $button = '
+ +
'; + return $button; + + + +} + +add_filter( 'woocommerce_checkout_fields', 'customize_checkout_registration_fields' ); + +function customize_checkout_registration_fields( $fields ) { + // Убираем поле ввода пароля + unset( $fields['account']['account_password'] ); + + return $fields; +} + +// Автоматическая генерация пароля +add_filter( 'woocommerce_checkout_posted_data', 'generate_password_for_registration' ); + +function generate_password_for_registration( $data ) { + + + $billing_first_name = isset( $_POST['billing_first_name'] ) ? sanitize_text_field( $_POST['billing_first_name'] ) : ''; + $billing_last_name = isset( $_POST['billing_last_name'] ) ? sanitize_text_field( $_POST['billing_last_name'] ) : ''; + $billing_address_1 = isset( $_POST['billing_address_1'] ) ? sanitize_text_field( $_POST['billing_address_1'] ) : ''; + $billing_address_2 = isset( $_POST['billing_address_2'] ) ? sanitize_text_field( $_POST['billing_address_2'] ) : ''; + $billing_city = isset( $_POST['billing_city'] ) ? sanitize_text_field( $_POST['billing_city'] ) : ''; + $billing_postcode = isset( $_POST['billing_postcode'] ) ? sanitize_text_field( $_POST['billing_postcode'] ) : ''; + $billing_country = isset( $_POST['billing_country'] ) ? sanitize_text_field( $_POST['billing_country'] ) : ''; + $billing_state = isset( $_POST['billing_state'] ) ? sanitize_text_field( $_POST['billing_state'] ) : ''; + $billing_phone = isset( $_POST['billing_phone'] ) ? sanitize_text_field( $_POST['billing_phone'] ) : ''; + $billing_email = isset( $_POST['billing_email'] ) ? sanitize_email( $_POST['billing_email'] ) : ''; + + + $data['shipping_first_name'] = $data['billing_first_name']; + $data['shipping_last_name'] = $data['billing_last_name']; + $data['shipping_address_1'] = $data['billing_address_1'] . $data['billing_address_2']; + $data['shipping_city'] = $data['billing_city']; + $data['shipping_postcode'] = $data['billing_postcode']; + $data['shipping_country'] = $data['billing_country']; + $data['shipping_state'] = $data['billing_state']; + + + + return $data; +} + + +function handle_user_registration_on_checkout() { + // Получаем данные из POST-запроса + if ( isset( $_POST['billing_email'] ) && isset( $_POST['reg'] )) { + if ($_POST['reg'] == '1'){ + + + $email = sanitize_email( $_POST['billing_email'] ); + $pass = sanitize_text_field( $_POST['pass'] ); + + // Регистрация пользователя + $user_id = custom_register_user_from_post( $email, $pass ); + + if ( is_wp_error( $user_id ) ) { + // Если email уже существует, выводим ошибку + wc_add_notice( $user_id->get_error_message(), 'error' ); + } else { + + wp_set_current_user( $user_id ); // Устанавливаем текущего пользователя + wp_set_auth_cookie( $user_id ); // Устанавливаем куки для авторизации + do_action( 'wp_login', $email, $user ); // Событие входа в систему + + }} + + } +} +add_action( 'woocommerce_checkout_process', 'handle_user_registration_on_checkout' ); + + +function custom_register_user_from_post( $email, $pass ) { + // Проверяем, есть ли уже пользователь с таким email + if ( email_exists( $email ) ) { + return new WP_Error( 'email_exists', 'Этот email уже зарегистрирован.' ); + } + + // Создаем пользователя в WordPress + $user_id = wp_create_user( $email, $pass, $email ); + if ( is_wp_error( $user_id ) ) { + return $user_id; // Возвращаем ошибку, если не удалось создать пользователя + } + + update_user_meta( $user_id, 'billing_email', $email ); // Устанавливаем email + update_user_meta( $user_id, 'user_email', $email ); // Устанавливаем email для входа + + // Устанавливаем роль пользователя как 'customer' для WooCommerce + $user = new WP_User( $user_id ); + $user->set_role( 'customer' ); + return $user_id; +} + + +add_filter( 'woocommerce_form_field', 'add_error_containers_to_checkout_fields', 10, 4 ); + +function add_error_containers_to_checkout_fields( $field, $key, $args, $value ) { + if ( is_checkout() ) { + // Добавляем контейнер для ошибок под полем + $error_container = '
'; + $field .= $error_container; + } + return $field; +} + +add_filter( 'woocommerce_add_error', 'remove_payments_word_from_errors_multilang' ); + +function remove_payments_word_from_errors_multilang( $error ) { + // Слова для удаления в разных языках + $translations = array( + 'Платежи', // Русский + 'Billing', // Английский + ); + + foreach ( $translations as $word ) { + $error = str_replace( $word, '', $error ); + } + + return trim( $error ); +} + + +add_action( 'woocommerce_checkout_process', 'validate_phone_field_with_li_data_id' ); + +function validate_phone_field_with_li_data_id() { + // Получаем значение телефона из формы + $phone = isset( $_POST['billing_phone'] ) ? sanitize_text_field( $_POST['billing_phone'] ) : ''; + + // Проверяем формат телефона + if ( ! preg_match( '/^\+?[0-9\s\-\(\)]+$/', $phone ) ) { + wc_add_notice( 'phone_err', 'error', 'billing_phone' ); + } +} + +add_action( 'woocommerce_checkout_process', 'make_address_required_for_specific_shipping' ); + +function make_address_required_for_specific_shipping() { + // Получаем выбранный метод доставки + $chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' ); + $chosen_shipping = isset( $chosen_shipping_methods[0] ) ? $chosen_shipping_methods[0] : ''; + + // Проверяем, выбран ли метод доставки "official_cdek:137" + if ( $chosen_shipping === 'official_cdek:137' ) { + // Проверяем, заполнен ли адрес + if ( empty( $_POST['billing_address_1'] ) ) { + wc_add_notice('adress_error', 'error' ); + } + } +} + +function auto_fill_shipping_fields_from_billing( $order_id ) { + // Получаем объект заказа + $order = wc_get_order( $order_id ); + + if ( ! $order ) { + return; // Если заказ недоступен, выходим + } + + // Получаем значения полей billing из глобального $_POST + $billing_first_name = isset( $_POST['billing_first_name'] ) ? sanitize_text_field( $_POST['billing_first_name'] ) : ''; + $billing_last_name = isset( $_POST['billing_last_name'] ) ? sanitize_text_field( $_POST['billing_last_name'] ) : ''; + $billing_address_1 = isset( $_POST['billing_address_1'] ) ? sanitize_text_field( $_POST['billing_address_1'] ) : ''; + $billing_address_2 = isset( $_POST['billing_address_2'] ) ? sanitize_text_field( $_POST['billing_address_2'] ) : ''; + $billing_city = isset( $_POST['billing_city'] ) ? sanitize_text_field( $_POST['billing_city'] ) : ''; + $billing_postcode = isset( $_POST['billing_postcode'] ) ? sanitize_text_field( $_POST['billing_postcode'] ) : ''; + $billing_country = isset( $_POST['billing_country'] ) ? sanitize_text_field( $_POST['billing_country'] ) : ''; + $billing_state = isset( $_POST['billing_state'] ) ? sanitize_text_field( $_POST['billing_state'] ) : ''; + $billing_phone = isset( $_POST['billing_phone'] ) ? sanitize_text_field( $_POST['billing_phone'] ) : ''; + $billing_email = isset( $_POST['billing_email'] ) ? sanitize_email( $_POST['billing_email'] ) : ''; + + // Копируем данные в поля доставки + $order->set_shipping_first_name( $billing_first_name ); + $order->set_shipping_last_name( $billing_last_name ); + $order->set_shipping_address_1( $billing_address_1 ); + $order->set_shipping_address_2( $billing_address_2 ); + $order->set_shipping_city( $billing_city ); + $order->set_shipping_postcode( $billing_postcode ); + $order->set_shipping_country( $billing_country ); + $order->set_shipping_state( $billing_state ); + + // Сохраняем изменения в заказе + $order->save(); +} diff --git a/wp-content/themes/cosmopet/templates/layout.twig b/wp-content/themes/cosmopet/templates/layout.twig index e69de29..2f652f9 100644 --- a/wp-content/themes/cosmopet/templates/layout.twig +++ b/wp-content/themes/cosmopet/templates/layout.twig @@ -0,0 +1,26 @@ + + + + {{ function('wp_head') }} + {{ function('wp_title') }} + + + + + + + + + {% include 'header.twig' %} + +
+ {% block content %} + {% endblock %} + {% include 'modal.twig' %} +
+ + {% include 'footer.twig' %} + + {{ function('wp_footer') }} + + \ No newline at end of file diff --git a/wp-content/themes/cosmopet/woocommerce/cart/cart-item-data.php b/wp-content/themes/cosmopet/woocommerce/cart/cart-item-data.php deleted file mode 100644 index 89c61e1..0000000 --- a/wp-content/themes/cosmopet/woocommerce/cart/cart-item-data.php +++ /dev/null @@ -1,29 +0,0 @@ - - diff --git a/wp-content/themes/cosmopet/woocommerce/cart/cart-shipping.php b/wp-content/themes/cosmopet/woocommerce/cart/cart-shipping.php deleted file mode 100644 index b341ab6..0000000 --- a/wp-content/themes/cosmopet/woocommerce/cart/cart-shipping.php +++ /dev/null @@ -1,121 +0,0 @@ -countries->get_formatted_address( $package['destination'], ', ' ); -$has_calculated_shipping = ! empty( $has_calculated_shipping ); -$show_shipping_calculator = ! empty( $show_shipping_calculator ); -$calculator_text = ''; - -?> - - - - - - - - -

- ' . esc_html( $formatted_destination ) . '' ); - $calculator_text = esc_html__( 'Change address', 'woocommerce' ); - } else { - echo wp_kses_post( apply_filters( 'woocommerce_shipping_estimate_html', __( 'Shipping options will be updated during checkout.', 'woocommerce' ) ) ); - } - ?> -

- - -

Нет доступных способов доставки. Для отображение доступных методов укажите ваш город.

- - - - - - - - - - \ No newline at end of file diff --git a/wp-content/themes/cosmopet/woocommerce/cart/cart.php b/wp-content/themes/cosmopet/woocommerce/cart/cart.php deleted file mode 100644 index b3040d7..0000000 --- a/wp-content/themes/cosmopet/woocommerce/cart/cart.php +++ /dev/null @@ -1,236 +0,0 @@ - - -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - 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 ); - $product_name = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key ); - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - -
;
- ×', - esc_url( wc_get_cart_remove_url( $cart_item_key ) ), - /* translators: %s is the product name */ - esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) ), - esc_attr( $product_id ), - esc_attr( $_product->get_sku() ) - ), - $cart_item_key - ); - ?> - - get_image(), $cart_item, $cart_item_key ); - } else { - printf( '%s', esc_url( $product_permalink ), apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key ) ); - } - ?> - - %s', esc_url( $product_permalink ), $_product->get_name() ), $cart_item, $cart_item_key ) ); - } - - do_action( 'woocommerce_after_cart_item_name', $cart_item, $cart_item_key ); - - // Meta data - echo wc_get_formatted_cart_item_data( $cart_item ); - - // Backorder notification - if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) { - echo wp_kses_post( apply_filters( 'woocommerce_cart_item_backorder_notification', '

' . esc_html__( 'Available on backorder', 'woocommerce' ) . '

', $product_id ) ); - } - ?> -
- get_sku() ) : ?> - get_sku() ); ?> - - - - - cart->get_product_price( $_product ), $cart_item, $cart_item_key ); - ?> - - is_sold_individually() ) { - $min_quantity = 1; - $max_quantity = 1; - } else { - $min_quantity = 0; - $max_quantity = $_product->get_max_purchase_quantity(); - } - - $product_quantity = woocommerce_quantity_input( - array( - 'input_name' => "cart[{$cart_item_key}][qty]", - 'input_value' => $cart_item['quantity'], - 'max_value' => $max_quantity, - 'min_value' => $min_quantity, - 'product_name' => $product_name, - ), - $_product, - false - ); - - echo apply_filters( 'woocommerce_cart_item_quantity', $product_quantity, $cart_item_key, $cart_item ); - ?> - - cart->get_product_subtotal( $_product, $cart_item['quantity'] ), $cart_item, $cart_item_key ); - ?> -
- -
-
- - -
- - - - -
- - -
-
- - - - - -
-
-
-
- -
- -
- -
- - - - - -
- - - -
- - diff --git a/wp-content/themes/cosmopet/woocommerce/cart/cross-sells.php b/wp-content/themes/cosmopet/woocommerce/cart/cross-sells.php deleted file mode 100644 index c7a7c53..0000000 --- a/wp-content/themes/cosmopet/woocommerce/cart/cross-sells.php +++ /dev/null @@ -1,57 +0,0 @@ - - -
- - -

- - - apply_filters( 'woodmart_cross_sells_products_per_view', 4 ), - 'hide_pagination_control' => true, - 'hide_prev_next_buttons' => true, - 'img_size' => 'woocommerce_thumbnail', - 'custom_sizes' => apply_filters( 'woodmart_cross_sells_custom_sizes', false ), - 'product_quantity' => woodmart_get_opt( 'product_quantity' ), - 'products_bordered_grid' => woodmart_get_opt( 'products_bordered_grid' ), - 'products_bordered_grid_style' => woodmart_get_opt( 'products_bordered_grid_style' ), - 'products_with_background' => woodmart_get_opt( 'products_with_background' ), - 'products_shadow' => woodmart_get_opt( 'products_shadow' ), - 'products_color_scheme' => woodmart_get_opt( 'products_color_scheme' ), - ); - - woodmart_set_loop_prop( 'products_view', 'carousel' ); - - echo woodmart_generate_posts_slider( $slider_args, false, $cross_sells ); - - ?> - -
- - - -
-
- - cart->is_empty() ) : ?> - - - - - -
-

- 0 ) : ?> - - - - -
- - - -
-
- -
- cart->is_empty() ) : ?> - - version, '3.7.0', '<' ) ) : ?> -

: cart->get_cart_subtotal(); ?>

- -

- -

- - - - -

- - - - - - -