Почему не работает страница корзины вукоммерс?
Всем привет. Написал верстку для сайта и пытаюсь к нему подключить Вукоммерс. В своей теме я создал папку 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
либо через гуттенберг верстку, если тема блочная.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Корзина WooCommerce может не работать из-за неправильного переопределения шаблонов. Судя по описанию, вы создали
woocommerce/templates/single-product.phpвнутри темы. Так делать не нужно. В теме путь должен повторять структуру шаблонов WooCommerce без папкиtemplates.Правильно:
your-theme/ woocommerce/ single-product.php cart/ cart.php checkout/ form-checkout.phpyour-theme/ woocommerce/ single-product.php cart/ cart.php checkout/ form-checkout.php
Неправильно:
your-theme/ woocommerce/ templates/ single-product.phpyour-theme/ woocommerce/ templates/ single-product.php
Но корзина обычно ломается не от
single-product.php, а от отсутствующих WooCommerce hooks в теме. В шаблонах должны бытьwp_head(),wp_footer(), нормальныйthe_content()для страницы корзины и поддержка WooCommerce.Проверьте, что страница “Корзина” содержит shortcode или блок корзины:
[woocommerce_cart]
И что она назначена в WooCommerce → Settings → Advanced → Cart page.
В теме обязательно:
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. Не переопределяйте шаблоны, пока базовая корзина не заработает на стандартной теме.