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

Выводим название товара напротив заказа в личном кабинете в WooCommerce

Для того, чтобы на странице Заказы в Личном кабинете покупателя в таблице вывести в ячейке название товара, необходимо добавить следующий код в файл functions.php:

// WC 2.6.4: Добавить новую колонку с товарами на странице заказов в личном кабинете
//1. Добавляем колонку после колонки с суммой заказа
add_filter( 'woocommerce_account_orders_columns', 'my_column_product');
function my_column_product($columns) {
    $new_columns = array();
    foreach ($columns as $key => $value) {
        $new_columns[$key] = $value;
        if ($key == 'order-total' ) $new_columns['order-products'] = "Товары";
    }
    return $new_columns;
}
// 2. Заполняем колонку "Товары"
add_action( 'woocommerce_my_account_my_orders_column_order-products', 'get_column_order_product');
function get_column_order_product($order) {
    foreach( $order->get_items() as $item_id => $item ) {
        $product = $order->get_product_from_item( $item );
        $product_permalink = $product->get_permalink( $item );
        echo sprintf( '<a href="%s">%s</a>', $product_permalink, $item['name'] );
        echo ' <strong class="product-quantity">' . sprintf( '&times; %s', $item['qty'] ) . '</strong>';
    }
}

В результате добавлена колонка «Товары» (см.скриншот).

download

Как добавить имя покупателя в тему письма о новом заказе для администратора магазина

Следующий код поможет вам добавить имя и фамилию покупателя в письмо для администратора о новом размещенном в вашем магазине заказе. Код вставляем в файл functions.php.

function skyverge_add_customer_to_email_subject( $subject, $order ) {

    $subject .= ' from ' . $order->billing_first_name . ' ' . $order->billing_last_name;
    return $subject;

}
add_filter( 'woocommerce_email_subject_new_order', 'skyverge_add_customer_to_email_subject', 10, 2 );

Как изменить мета описание alt и title для миниатюр в магазине WooCommerce

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

add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);
function change_attachement_image_attributes($attr, $attachment) {
    global $post;
    if ($post->post_type == 'product') {
        $title = $post->post_title;
        $attr['alt'] = $title;
        $attr['title'] = $title;
    }
    return $attr;
}

Как убрать строку Подитог в WooCommerce

Для того, чтобы избавиться от чаще всего бесполезной строчки Подитог, необходимо добавить следующий код в файл functions.php.

add_filter( 'woocommerce_get_order_item_totals', 'adjust_woocommerce_get_order_item_totals' );

function adjust_woocommerce_get_order_item_totals( $totals ) {
  unset($totals['cart_subtotal']  );
  return $totals;
}

Как открывать ссылки для внешнего товара в новом окне в WooCommerce

Для того, чтобы из каталога ссылка для внешнего товара открывалась в новом окне вставьте в functions.php своей темы следующий код:

function my_woocommerce_loop_add_to_cart_link($link,$product) {
    if( $product->is_type( 'external' ) ) {
        $link = str_replace('<a ', '<a target="_blank" ', $link);
        return $link;
    }
    return $link;
}
add_filter( "woocommerce_loop_add_to_cart_link", "my_woocommerce_loop_add_to_cart_link", 10, 2);

Как добавить сортировку товаров по наличию в магазине

Для того, чтобы добавить дополнительную сортировку товаров по наличию в магазине, вставляем следующий код в файл functions.php.

add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );

function custom_woocommerce_get_catalog_ordering_args( $args ) {
$orderby_value = isset( $_GET['orderby'] ) ? woocommerce_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );

if ( 'stock_list_asc' == $orderby_value ) {
    $args['orderby'] = 'meta_value_num wp_posts.ID';
    $args['order'] = 'ASC';
    $args['meta_key'] = '_stock';
}
elseif ( 'stock_list_desc' == $orderby_value ) {
    $args['orderby'] = 'meta_value_num wp_posts.ID';
    $args['order'] = 'DESC';
    $args['meta_key'] = '_stock';
}

return $args;
}

add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );

function custom_woocommerce_catalog_orderby( $sortby ) {
$sortby['stock_list_desc'] = 'Остаток: по убыванию';
$sortby['stock_list_asc'] = 'Остаток: по возрастанию';
return $sortby;
}

В итоге результат будет выглядеть примерно так:

а. В админке появились 2 пункта сортировки. Можно выбрать нужный пункт по умолчанию.
download2
б. В публичной части появились 2 новых пункта сортировки.
download3

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

Об авторе ADv

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

    День добрый. Строка «Подытог» не исчезает при вставке указанного кода. При этом код для отображения названия товара работает, то есть вставляю правильно.
    WooCommerce 2.6.9., WordPress 4.7, php 5.4.45

  • ChilliDance

    Аналогичная ситуация Как Убрать Строку Подитог В WooCommerce?

Scroll To Top