Добавить WooCommerce корзину покупок в меню без плагина

Примечание: Этот текст может содержать некоторые партнерские ссылки, а это значит, что я зарабатываю небольшую комиссию без каких-либо дополнительных затрат с вашей стороны, если вы воспользуетесь этими ссылками. Спасибо за понимание и поддержку.

У плагина WooCommerce интернет-магазина есть плагин — расширение, с помощью которого можно добавить в горизонтальное меню корзину покупателя. Этот бесплатный плагин называется WooCommerce Menu Cart. Об этом плагине я коротко рассказал в своем обзоре. Можно прочитать здесь.

Сегодня я хочу дать вам вариант кода, который делает все тоже самое, только — без плагина.

Я уже писал, что когда есть возможность заменить плагин кодом, который добавляется в файл functions.php активной темы — это лучше, чем если использовать плагин.

Почему? Причин несколько.

Основная причина — мы облегчаем немного загрузку сайта, задействуем меньше строк кода. Страница сайта грузится в браузер быстрее.

Вторая причина: можно больше уделить внимания кастомизации внешнего вида. Сделать ярлык корзины покупателя в меню ближе по стилю к используемой теме сайта.

Я не буду много писать. Ниже — сам код, который необходимо добавить в файл functions.php вашей активной темы.

//* Make Font Awesome available
add_action ( 'wp_enqueue_scripts', 'enqueue_font_awesome' );
function enqueue_font_awesome () {

wp_enqueue_style ( 'font-awesome', '//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css' );

}

/**
* Place a cart icon with number of items and total cost in the menu bar.
*
* Source: http://wordpress.org/plugins/woocommerce-menu-bar-cart/
*/
add_filter ('wp_nav_menu_items','sk_wcmenucart', 10, 2);
function sk_wcmenucart ($menu, $args) {

// Check if WooCommerce is active and add a new item to a menu assigned to Primary Navigation Menu location
if ( !in_array ( 'woocommerce/woocommerce.php', apply_filters ( 'active_plugins', get_option ( 'active_plugins' ) ) ) || 'primary' !== $args->theme_location )
return $menu;

ob_start ();
global $woocommerce;
$viewing_cart = __ ('Посмотреть корзину', 'your-theme-slug');
$start_shopping = __ ('Начать покупки', 'your-theme-slug');
$cart_url = $woocommerce->cart->get_cart_url ();
$shop_page_url = get_permalink ( woocommerce_get_page_id ( 'shop' ) );
$cart_contents_count = $woocommerce->cart->cart_contents_count;
$cart_contents = sprintf (_n ('%d товар', '%d товаров', $cart_contents_count, 'your-theme-slug'), $cart_contents_count);
$cart_total = $woocommerce->cart->get_cart_total ();
// Uncomment the line below to hide nav menu cart item when there are no items in the cart
// if ( $cart_contents_count > 0 ) {
if ($cart_contents_count == 0) {
$menu_item = '
<ul>
 	<li class="right">';
} else {
$menu_item = '
</li>
 	<li class="right">';
}</li>
</ul>
 

$menu_item .= '<i class="fa fa-shopping-cart"></i> ';

$menu_item .= $cart_contents.' — '. $cart_total;
$menu_item .= '

';
// Uncomment the line below to hide nav menu cart item when there are no items in the cart
// }
echo $menu_item;
$social = ob_get_clean ();
return $menu . $social;
}

Несколько комментариев к коду.

Посмотрите внимательно код и найдите в нем строки с русским переводом. В этих строках вы увидите такой текст: your-theme-slug.

Русские слова можно заменить английскими, но тогда текст your-theme-slug необходимо заменить слагом, который добавлен в коде локализации, и затем сделать корректный перевод с помощью специального плагина-переводчика или редактора PoEdit.

Можно и не переводить на английский, а просто исправить русские слова, заменив их теми фразами, которые вам больше нравятся и больше подходят по тематике вашего интернет магазина.

Важно и желательно — сначала сохранить файл functions.php активной темы на компьютер, или редактировать файл не на сайте, а на локалке, на копии сайта на поддомене.

Если материал вам понравился, нажмите или расскажите о нем друзьям!

Важно! Эта запись может содержать ссылки на плагины, которые к моменту вашего чтения и скачивания могут работать не корректно. Будьте внимательны.

Добавить комментарий

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