• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Слияние корзины с оформлением wordpress + woocommerce

Lart

Новичок
И так пришла пора рассказать про слияние корзины с оформлением в вордпресс.На данный момент это очень популярно стало,так как магазины у которых корзина находится в оформлении лидируют по удобству. Почему я решил выложить инструкцию по склеиванию? Как оказалось это очень даже не сложно сделать,но информации толковой ни где нету по этому поводу,есть лишь подобие или совсем укороченное оформление ,а так же свежесть информации оставляет желать лучшего. Моя сборка применима к последней версии вордпресс и woocommerce.Описывать буду подробно каждый шаг до результата.
Перекидываем страницу оформления в папку темы.
Так как нам нужно чтобы файлы плагина остались не тронутыми что бы не потерять при обновлении изменения мы будем делать все через шаблон сайта.
Заходим в папку сайта, wp-content/plugin/woocommerce/templates/checkout/ и копируем файл form-checkout.php.
Теперь перейдем в папку темы wp-content/themes/ваша-тема и создаем в папке вашей темы папку woocommerce,затем внутри папку checkout и в эту папку вставляем наш файл form-checkout. Хочу сразу сказать что у каждой темы по разному может уже быть папка woocommerce а может и нет,поэтому если чего то не хватает дополняем.
Зайдем в папку wp-content/plugin/woocommerce/templates/cart/ и откроем файл cart.php,опять же этот файл может быть переопределен вашей темой.
В файле найдите строки
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
.....
</form>
копируем этот код полностью и переходим в наш файл form-checkoutScreenshot_1.pngувидим вот такой код и вставим наш скопированный код
... ?>
сюда
<form name="checkout"...... сохраним и заходим на сайт на страницу оформления будет вот так
Screenshot_2.png
но теперь при клике по кнопке обновить в оформлении нас перебрасывает на страницу корзины,хоть и все сохраняется не плохо
Нам нужно что бы запрос шел со страницы checkout к скриптам отвечающим за корзину
Поэтому сначала изменим вот эту строку
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
на
<form class="woocommerce-cart-form" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" method="post">
Теперь самое важное.
Переходим по пути wp-content\plugins\woocommerce\assets\js\frontend и копируем файл cart.js
переносим в папку со скриптами вашей темы и открываем файл cart.js и заменим все переменные wc_cart_params на wc_checkout_params
сохраним и зайдем файл function.php вашей темы,для каждой темы по разному может быть,возможно подключаемые скрипты инклудятся с других файлов темы
примерно вот так будет выглядить код подключения скриптов
function load_style_script(){
wp_enqueue_script('jquery_my', get_template_directory_uri().'/js/jquery.js');
wp_enqueue_script('jquery_galery', get_template_directory_uri().'/js/jq.galery.js');
wp_enqueue_script('jquery_bootstrap', get_template_directory_uri().'/js/bootstrap.js');
wp_enqueue_script('js_my', get_template_directory_uri().'/js/js.js');
wp_enqueue_style('css_bootstrap', get_template_directory_uri().'/css/bootstrap.css');
wp_enqueue_style('css_font', get_template_directory_uri().'/css/font-awesome.css');
wp_enqueue_style('css_my', get_template_directory_uri().'/css/style.css');
}
add_action('wp_enqueue_scripts','load_style_script');
добавим вот такую строку
wp_enqueue_script('simple_checkout', get_template_directory_uri().'/js/cart.js'); все сохраняем и готово,теперь корзина полностью работает с помощью ajax.

Ну раз уж начали делать надо до конца доделывать,корзина теперь в оформлении но человек может попасть на страницу корзины все равно,нужно сделать
редирект.
Опять же зайдем в function.php и в самом низу пропишим эти строки
function wpse_Nologin_redirect() {
if (is_cart() && !WC()->cart->get_cart_contents_count() == 0){
$MyLoginURL = esc_url( wc_get_checkout_url() );
wp_redirect($MyLoginURL);
exit;
}

}
add_action('template_redirect', 'wpse_Nologin_redirect');
 
  • Like
Реакции: D&B
Сверху Снизу