Пачка полезных сниппетов для WooCommerce. Часть 3

Убираем тег WooCommerce Generator

function my_woocommerce_loaded_function() {
global $woocommerce;
 
// убираем тег WC generator из секции <head>
remove_action( 'wp_head', array( $woocommerce, 'generator' ) );
}
 
// вызываем только после того, как woocommerce полностью загрузился
add_action( 'woocommerce_init', 'my_woocommerce_loaded_function' );
<div style="float:right;width:350px;margin:0 0 10px 15px;">
<div id="yandex_rtb_R-A-187781-2"></div>
</div>

Исключаем категорию со страницы магазина

<?php
/**
* Этот код необходимо добавить в файл functions.php вашей темы
**/
add_filter( 'pre_get_posts', 'custom_pre_get_posts_query' );
 
function custom_pre_get_posts_query( $q ) {
 
if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
 
$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'tshirts' ),
'operator' => 'NOT IN'
)));
 
remove_filter( 'pre_get_posts', 'custom_pre_get_posts_query' );
 
}
?>

Отправляем письмо от покупателя после выполнения заказа

add_action( 'woocommerce_order_status_completed', 'custom_send_email_from_customer' );
 
function custom_send_email_from_customer( $order_id ) {
$order = new WC_Order( $order_id );
 
$headers = 'From: ' . $order->billing_first_name . ' ' . $order->billing_last_name . ' <' . $order->billing_email . '>' . "\r\n";
wp_mail( 'someone@somesite.com', 'Тема', 'Сообщение', $headers );
}

Изменяем изображение-заглушку для товара с отсутствующей картинкой

/*
* Этот код необходимо добавить в файл functions.php вашей темы. Изменяем путь изображения с  filename/path на ваше собственное
*
**/
add_filter('woocommerce_placeholder_img_src', 'custom_woocommerce_placeholder_img_src');
 
function custom_woocommerce_placeholder_img_src( $src ) {
$upload_dir = wp_upload_dir();
$uploads = untrailingslashit( $upload_dir['baseurl'] );
$src = $uploads . '/2012/07/thumb1.jpg';
 
return $src;
}

Добавляем произвольное поле (в заказ) в письмо о заказе

/**
* Добавляем поле в письма о заказеAdd the field to order emails
**/
add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys');
 
function my_woocommerce_email_order_meta_keys( $keys ) {
$keys['Как вы узнали о нас?'] = 'hear_about_us';
return $keys;
}

Задаем страну по-умолчанию для страницы оплаты

/**
* Управление страной по-умолчанию
*
* Этот код необходимо добавить в файл functions.php вашей темы
*/
add_filter( 'default_checkout_country', 'change_default_checkout_country' );
add_filter( 'default_checkout_state', 'change_default_checkout_state' );
 
function change_default_checkout_country() {
return 'XX'; // код страны
}
 
function change_default_checkout_state() {
return 'XX'; // код штата (если необходимо)
}

Скрываем количество на складе, оставляя статус «В наличии/Нет в наличии»

Некоторым магазинам возможно понадобиться скрыть точнее количество единиц на складе. Этот сниппет скроет точное количество остатка, однако всё так же будет отображать состояния «В наличии/Нет в наличии». Скопируйте и вставьте код ниже в файл functions.php вашей темы:

	
// Хук
add_filter( 'woocommerce_get_availability', 'custom_override_get_availability', 1, 2);
 
// Наша хукнутая функция $availablity проходит через фильтр
function custom_override_get_availability( $availability, $_product ) {
if ( $_product->is_in_stock() ) $availability['availability'] = __('В наличии', 'woocommerce');
return $availability;
}

Разрешаем выполнение шорткодов в кратком описании товара

Этот код необходимо добавить в файл functions.php вашей темы

if (!function_exists('woocommerce_template_single_excerpt')) {
function woocommerce_template_single_excerpt( $post ) {
global $post;
if ($post->post_excerpt) echo '<div itemprop="description">' . do_shortcode(wpautop(wptexturize($post->post_excerpt))) . '</div>';
}
}

Перезаписываем поля оплаты

add_filter( 'woocommerce_billing_fields', 'custom_woocommerce_billing_fields' );
 
function custom_woocommerce_billing_fields( $fields ) {
 
// Перезаписываем единичное поле
$fields['billing_first_name']['label'] = 'Ваше поле';
// Перезаписываем единичное обязательное значение
$fields['billing_first_name']['required'] = false;
 
// Перезаписываем всё
$fields['billing_postcode'] = array(
'label' => __('Индекс', 'woothemes'),
'placeholder' => __('Индекс', 'woothemes'),
'required' => true,
'class' => array('form-row-last update_totals_on_change')
);
 
/**
* Можно также перезаписать поля - billing_first_name, billing_last_name, billing_company, billing_address_1, billing_address_2, billing_city, billing_postcode, billing_country, billing_state, billing_email, billing_phone
*/
return $fields;
}

Изменяем текст подсказки для примечаний к заказу

add_filter('woocommerce_checkout_fields', 'custom_woocommerce_checkout_fields');
 
function custom_woocommerce_checkout_fields( $fields ) {
 
$fields['order']['order_comments']['placeholder'] = 'Ваше собственное примечание к заказу';
 
return $fields;
}

Делаем поле адреса шире

add_filter('woocommerce_billing_fields', 'custom_woocommerce_billing_fields');
 
function custom_woocommerce_billing_fields( $fields ) {
 
$fields['billing_address_1']['class'] = array( 'form-row-wide' );
 
$fields['billing_address_2']['class'] = array( 'form-row-wide' );
 
return $fields;
}

Задаем собственную ссылку для перенаправления после добавления в корзину

add_filter('add_to_cart_redirect', 'custom_add_to_cart_redirect');
 
function custom_add_to_cart_redirect() {
return get_permalink(get_option('woocommerce_checkout_page_id')); // Заменяем на свою сссылку
}

По всем вопросам и отзывам просьба писать в комментарии ниже.

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

VN:F [1.9.22_1171]
Rating: 5.0/5 (4 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top