Убираем тег 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')); // Заменяем на свою сссылку
}
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
