Почему не работает страница корзины вукоммерс?

Ссылка скопирована
1 ответ

Всем привет. Написал верстку для сайта и пытаюсь к нему подключить Вукоммерс. В своей теме я создал папку woocommerce, в ней создал папку templates и добавил в папку файл single-product.php, чтобы переопределить шаблон карточки товара.

Также добавил в functions.php
add_theme_support( 'woocommerce' );

и добавил

add_filter( 'wc_get_template_part', 'use_custom_single_product_template', 10, 3 ); 	function use_custom_single_product_template( $template, $slug, $name ) { 		if ( $slug === 'content' && $name === 'single-product' ) { 			$template = get_template_directory() . '/woocommerce/templates/single-product.php'; 		} 		return $template; 	}

add_filter( 'wc_get_template_part', 'use_custom_single_product_template', 10, 3 ); function use_custom_single_product_template( $template, $slug, $name ) { if ( $slug === 'content' && $name === 'single-product' ) { $template = get_template_directory() . '/woocommerce/templates/single-product.php'; } return $template; }

Чтобы работала моя html разметка карточки товара, а не вукоммерс. И карточка товара работает так, как я и ожидал.

Теперь пытаюсь подключить корзину, но ничего не получается. В шаблоне корзины самого Вукоммерс написано:
This template can be overridden by copying it to yourtheme/woocommerce/cart/cart.php

Я сделал ровно, как написано: в своей теме создал папки /woocommerce/cart/ и положил внутрь cart.php.
В настройках Вукоммерс во вкладке "Дополнительное" указал страницу корзины. Также добавил фильтр, чтобы указать Вукоммерс, что я переопределяю шиблон:

add_filter( 'wc_get_template_part', 'use_custom_cart_template', 10, 3 ); 	function use_custom_cart_template( $template, $slug, $name ) { 		if ( $slug === 'cart' && $name === 'cart' ) { 			$template = get_template_directory() . '/woocommerce/cart/cart.php'; 		} 		return $template; 	}

add_filter( 'wc_get_template_part', 'use_custom_cart_template', 10, 3 ); function use_custom_cart_template( $template, $slug, $name ) { if ( $slug === 'cart' && $name === 'cart' ) { $template = get_template_directory() . '/woocommerce/cart/cart.php'; } return $template; }

Но в итоге при переходе на страницу корзины, контента никакого нет. Она пустая.

Даже, если не перезаписывать страницу корзины, а использовать то, что предлагает Вукоммерс все равно ничего не работает. Т.е. страница пустая полностью.

Но если я кидаю файл cart.php в корень, делаю его шаблоном:
/**
* Template Name: Cart page
**/
И в настройках страницы указываю шаблон Cart page, то в корзине контент появляется.

В общем, сам вопрос: почему не получается подключить корзину к сайту? Даже, если не перезаписывать файл cart.php, то ничего не работает. Я видимо где-то упустил подключение корзины к теме. Но где?

Дополнительно:

Ответы:

Корзина должна выводится либо шорт-кодом [woocommerce_cart] размещенным на странице корзины https://i.imgur.com/HTF8lo7.png
либо через гуттенберг верстку, если тема блочная.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Корзина WooCommerce может не работать из-за неправильного переопределения шаблонов. Судя по описанию, вы создали woocommerce/templates/single-product.php внутри темы. Так делать не нужно. В теме путь должен повторять структуру шаблонов WooCommerce без папки templates.

Правильно:

your-theme/
  woocommerce/
    single-product.php
    cart/
      cart.php
    checkout/
      form-checkout.php

your-theme/ woocommerce/ single-product.php cart/ cart.php checkout/ form-checkout.php

Неправильно:

your-theme/
  woocommerce/
    templates/
      single-product.php

your-theme/ woocommerce/ templates/ single-product.php

Но корзина обычно ломается не от single-product.php, а от отсутствующих WooCommerce hooks в теме. В шаблонах должны быть wp_head(), wp_footer(), нормальный the_content() для страницы корзины и поддержка WooCommerce.

Проверьте, что страница “Корзина” содержит shortcode или блок корзины:

[woocommerce_cart]

[woocommerce_cart]

И что она назначена в WooCommerce → Settings → Advanced → Cart page.

В теме обязательно:

add_action('after_setup_theme', function () {
    add_theme_support('woocommerce');
});

add_action('after_setup_theme', function () { add_theme_support('woocommerce'); });

Также проверьте консоль и Network. Корзина зависит от JS WooCommerce, AJAX fragments, cookies и сессий. Если в теме нет wp_footer(), скрипты могут не подключиться, и кнопки/обновление корзины не будут работать.

Итог: исправьте путь переопределения шаблонов, проверьте назначение страницы корзины, наличие [woocommerce_cart], wp_head()/wp_footer() и стандартных WooCommerce hooks. Не переопределяйте шаблоны, пока базовая корзина не заработает на стандартной теме.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно