Сниппеты для WooCommerce.

0 Comment

Подборка сниппетов-кодов от популярного, западного WP разработчика множества WooCommerce плагинов – Remi

1. Добавить способ оплаты в админ-email woocommerce

add_action( 'woocommerce_email_after_order_table', 'add_payment_method_to_admin_new_order', 15, 2 );
function add_payment_method_to_admin_new_order( $order, $is_admin_email ) {
  if ( $is_admin_email ) {
    echo '<p><strong>Payment Method:</strong> ' . $order->payment_method_title . '</p>';
  }
}

2. Дополнительные товары на странице/в ряду

remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 15 );
if ( ! function_exists( 'woocommerce_output_upsells' ) ) {
    function woocommerce_output_upsells() {
        woocommerce_upsell_display( 3,3 ); // Display 3 products in rows of 3
    }
}

3. Удаление товарной категории с главной страницы магазина

add_action( '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;
  
    if ( ! is_admin() && is_shop() && ! is_user_logged_in() ) {
        $q->set( 'tax_query', array(array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => array( 'color', 'flavor', 'spices', 'vanilla' ), // Don't display products in these categories on the shop page
            'operator' => 'NOT IN'
        )));
  
    }
    remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}

4. Быстрый перевод любого ярлыка-ценника

add_filter('gettext',  'translate_text');
add_filter('ngettext',  'translate_text');
function translate_text($translated) {
     $translated = str_ireplace('Choose and option',  'Select',  $translated);
     return $translated;
}

5. Исключить категорию из виджета woocommerce -категории

add_filter( 'woocommerce_product_categories_widget_args', 'woo_product_cat_widget_args' );

function woo_product_cat_widget_args( $cat_args ) {
  
    $cat_args['exclude'] = array('16');
  
    return $cat_args;
}

6. Добавить произвольное поле во вкладку «вариативный товар»

//Display Fields
add_action( 'woocommerce_product_after_variable_attributes', 'variable_fields', 10, 2 );
//JS to add fields for new variations
add_action( 'woocommerce_product_after_variable_attributes_js', 'variable_fields_js' );
//Save variation fields
add_action( 'woocommerce_process_product_meta_variable', 'variable_fields_process', 10, 1 );
function variable_fields( $loop, $variation_data ) {
?>  
    <tr>
        <td>
            <div>
                    <label></label>
                    <input type="text" size="5" name="my_custom_field[]" value=""/>
            </div>
        </td>
    </tr>

<tr>
        <td>
            <div>
                    <label></label>
                  
            </div>
        </td>
    </tr>
<?php
}
function variable_fields_process( $post_id ) {
    if (isset( $_POST['variable_sku'] ) ) :
        $variable_sku = $_POST['variable_sku'];
        $variable_post_id = $_POST['variable_post_id'];
        $variable_custom_field = $_POST['my_custom_field'];
        for ( $i = 0; $i < sizeof( $variable_sku ); $i++ ) :
            $variation_id = (int) $variable_post_id[$i];
            if ( isset( $variable_custom_field[$i] ) ) {
                update_post_meta( $variation_id, '_my_custom_field', stripslashes( $variable_custom_field[$i] ) );
            }
        endfor;
    endif;
}

7. Заменить «Товар отсутствует» на «Продано»

add_filter('woocommerce_get_availability', 'availability_filter_func');

function availability_filter_func($availability)
{
    $availability['availability'] = str_ireplace('Out of stock', 'Sold', $availability['availability']);
    return $availability;
}

8. Отображать «товар уже в корзине» вместо кнопки «добавить в корзину». Изменить текст «добавить в корзину» на странице товара.

/**
* Change the add to cart text on single product pages
*/
add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');

function woo_custom_cart_button_text() {

    global $woocommerce;
  
    foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
  
        if( get_the_ID() == $_product->id ) {
            return __('Already in cart - Add Again?', 'woocommerce');
        }
    }
  
    return __('Add to cart', 'woocommerce');
}

/**
* Change the add to cart text on product archives
*/
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

function woo_archive_custom_cart_button_text() {

    global $woocommerce;
  
    foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values['data'];
  
        if( get_the_ID() == $_product->id ) {
            return __('Already in cart', 'woocommerce');
        }
    }
  
    return __('Add to cart', 'woocommerce');
}

9. Скрыть количество товара в выводимых категориях

add_filter( 'woocommerce_subcategory_count_html', 'woo_remove_category_products_count' );

function woo_remove_category_products_count() {
    return;
}

10. Сделать поля для регистрации при оформлении заказа обязательными для заполнения 

add_filter( 'woocommerce_checkout_fields', 'woo_filter_account_checkout_fields' );
function woo_filter_account_checkout_fields( $fields ) {
    $fields['account']['account_username']['required'] = true;
    $fields['account']['account_password']['required'] = true;
    $fields['account']['account_password-2']['required'] = true;

    return $fields;
}

11. Переименовать какую-либо вкладку на странице «Добавить товар»

add_filter( 'woocommerce_product_tabs', 'woo_rename_tab', 98);
function woo_rename_tab($tabs) {

$tabs['description']['title'] = 'More info';

return $tabs;
}

12. Вывести список категорий товаров woocommerce

$args = array(
    'number'     => $number,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'include'    => $ids
);

$product_categories = get_terms( 'product_cat', $args );

$count = count($product_categories);
if ( $count > 0 ){
     echo "<ul>";
     foreach ( $product_categories as $product_category ) {
       echo '<li><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</li>';
      
     }
     echo "</ul>";
}

13. Заменить заголовок главной страницы магазина

add_filter( 'woocommerce_page_title', 'woo_shop_page_title');

function woo_shop_page_title( $page_title ) {
  
    if( 'Shop' == $page_title) {
        return "My new title";
    }
}

14. Изменить заголовок виджета

/*
* Change widget title
*/
add_filter( 'widget_title', 'woo_widget_title', 10, 3);

function woo_widget_title( $title, $instance, $id_base ) {
  
    if( 'onsale' == $id_base) {
        return "My new title";
    }
}

15. Удалить дефолтные установки woocommerce

add_filter( 'woocommerce_catalog_settings', 'woo_remove_catalog_options' );

function woo_remove_catalog_options( $catalog ) {

    unset($catalog[23]); //Trim zeros (no)
    unset($catalog[22]); //2 decimals
    unset($catalog[21]); //decimal sep (.)
    unset($catalog[20]); //thousand sep (,)
    unset($catalog[19]); //currency position (left)  
    unset($catalog[18]); //currency position (left)  
    unset($catalog[5]); // ajax add to cart (no)  
  
    return $catalog;
}

16. Изменить электронный адрес отправителя в поле «от кого»

function woo_custom_wp_mail_from() {
        global $woocommerce;
        return html_entity_decode( 'your@email.com' );
}
add_filter(

17. Убрать код из имени в строке «От кого» в электронном сообщении woocommerce

function woo_custom_wp_mail_from_name() {
        global $woocommerce;
        return html_entity_decode( get_option( 'woocommerce_email_from_name' ) );
}
add_filter( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99 );

function woo_custom_wp_mail_from() {
        global $woocommerce;
        return html_entity_decode( get_option( 'woocommerce_email_from' ) );
}
add_filter( 'wp_mail_from_name', 'woo_custom_wp_mail_from_name', 99 );

18. Вернуть колонку, в которой отображаются ID рекомендуемых товаров

function woo_get_featured_product_ids() {
    // Load from cache
    $featured_product_ids = get_transient( 'wc_featured_products' );

    // Valid cache found
    if ( false !== $featured_product_ids )
        return $featured_product_ids;

    $featured = get_posts( array(
        'post_type'      => array( 'product', 'product_variation' ),
        'posts_per_page' => -1,
        'post_status'    => 'publish',
        'meta_query'     => array(
            array(
                'key'         => '_visibility',
                'value'     => array('catalog', 'visible'),
                'compare'     => 'IN'
            ),
            array(
                'key'     => '_featured',
                'value' => 'yes'
            )
        ),
        'fields' => 'id=>parent'
    ) );

    $product_ids = array_keys( $featured );
    $parent_ids  = array_values( $featured );
    $featured_product_ids = array_unique( array_merge( $product_ids, $parent_ids ) );

    set_transient( 'wc_featured_products', $featured_product_ids );

    return $featured_product_ids;
}

19. Добавить произвольное поле на страницу редактирования адреса

// add fields to edit address page
function woo_add_edit_address_fields( $fields ) {

    $new_fields = array(
                'date_of_birth'     => array(
                'label'             => __( 'Date of birth', 'woocommerce' ),
                'required'          => false,
                'class'             => array( 'form-row' ),
            ),
        );
      
    $fields = array_merge( $fields, $new_fields );
  
    return $fields;
  
}

add_filter( 'woocommerce_default_address_fields', 'woo_add_edit_address_fields' );

20. Отображать шорткод для товаров, которые в каталоге выставлены на распродажу

function woocommerce_sale_products( $atts ) {

    global $woocommerce_loop;

    extract(shortcode_atts(array(
        'per_page'  => '12',
        'columns'   => '4',
        'orderby' => 'date',
        'order' => 'desc'
    ), $atts));

    $woocommerce_loop['columns'] = $columns;

    $args = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'ignore_sticky_posts'   => 1,
        'posts_per_page' => $per_page,
        'orderby' => $orderby,
        'order' => $order,
        'meta_query' => array(
            array(
                'key' => '_visibility',
                'value' => array('catalog', 'visible'),
                'compare' => 'IN'
            ),
            array(
                'key' => '_sale_price',
                'value' =>  0,
                'compare'   => '>',
                'type'      => 'NUMERIC'
            )
        )
    );
    query_posts($args);
    ob_start();
    woocommerce_get_template_part( 'loop', 'shop' );
    wp_reset_query();

    return ob_get_clean();
}

add_shortcode('sale_products', 'woocommerce_sale_products');

21. Товары, выставленные на распродажу

function woo_have_onsale_products() {
  
    global $woocommerce;

    // Get products on sale
    $product_ids_on_sale = array_filter( woocommerce_get_product_ids_on_sale() );

    if( !empty( $product_ids_on_sale ) ) {
        return true;
    } else {
        return false;
    }
  
}

// Example:
if( woo_have_onsale_products() ) {
    echo 'have onsale products';
} else {
    echo 'no onsale product';
}

22. Установить минимальную сумму заказа

add_action( 'woocommerce_checkout_process', 'wc_minimum_order_amount' );
function wc_minimum_order_amount() {
    global $woocommerce;
    $minimum = 50;
    if ( $woocommerce->cart->get_cart_total(); < $minimum ) {
           $woocommerce->add_error( sprintf( 'You must have an order with a minimum of %s to place your order.' , $minimum ) );
    }
}

23. Сортировать товары на главной странице магазина по цене, дате поступления или названию

add_filter('woocommerce_default_catalog_orderby', 'custom_default_catalog_orderby');
function custom_default_catalog_orderby() {
     return 'date'; // Can also use title and price
}

24. Перенаправление на страницу оформления заказа после нажатия кнопки «добавить в корзину»

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

25. Пересылать копию электронного сообщения реципиенту после того, как заказ оформлен

function woo_extra_email_recipient($recipient, $object) {
    $recipient = $recipient . ', your@email.com';
    return $recipient;
}
add_filter( 'woocommerce_email_recipient_customer_completed_order', 'woo_extra_email_recipient', 10, 2);

26. Заменить дефолтную иконку PayPal в магазине WooCommerce

/*
* Replace WooCommerce default PayPal icon
*/
function paypal_checkout_icon() {
return 'httpss://www.paypalobjects.com/webstatic/mktg/logo-center/logo_betalen_met_paypal_nl.jpg'; // write your own image URL here
}
add_filter( 'woocommerce_paypal_icon', 'paypal_checkout_icon' );

27. Заменить дефолтную картинку для подстановки собственного изображения

/*
* goes in theme functions.php or a custom plugin. Replace the image filename/path with your own 🙂
*
**/
add_action( 'init', 'custom_fix_thumbnail' );
function custom_fix_thumbnail() {
  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;
    }
}

28. Скрыть «Товары» из цепочки «хлебных крошек»

/*
* Hide "Products" in WooCommerce breadcrumb
*/
function woo_custom_filter_breadcrumbs_trail ( $trail ) {
  foreach ( $trail as $k => $v ) {
    if ( strtolower( strip_tags( $v ) ) == 'products' ) {
      unset( $trail[$k] );
      break;
    }
  }

  return $trail;
}

add_filter( 'woo_breadcrumbs_trail', 'woo_custom_filter_breadcrumbs_trail', 10 );

29. Пустая WooCommerce корзина

/*
* Empty WooCommerce cart
*/
function my_empty_cart(){
    global $woocommerce;
    $woocommerce->cart->empty_cart();
}
add_action('init', 'my_empty_cart');

30. Автоматическое добавлять товар в корзину при посещении его страницы

/*
* Add item to cart on visit
*/
function add_product_to_cart() {
    if ( ! is_admin() ) {
        global $woocommerce;
        $product_id = 64;
        $found = false;
        //check if product already in cart
        if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) {
            foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) {
                $_product = $values['data'];
                if ( $_product->id == $product_id )
                    $found = true;
            }
            // if product not found, add it
            if ( ! $found )
                $woocommerce->cart->add_to_cart( $product_id );
        } else {
            // if no products in cart, add it
            $woocommerce->cart->add_to_cart( $product_id );
        }
    }
}
add_action( 'init', 'add_product_to_cart' );

31. Добавить пользовательскую валюту/знак валюты

add_filter( 'woocommerce_currencies', 'add_my_currency' );
function add_my_currency( $currencies ) {
     $currencies['ABC'] = __( 'Currency name', 'woocommerce' );
     return $currencies;
}
add_filter('woocommerce_currency_symbol', 'add_my_currency_symbol', 10, 2);
function add_my_currency_symbol( $currency_symbol, $currency ) {
     switch( $currency ) {
          case 'ABC': $currency_symbol = '$'; break;
     }
     return $currency_symbol;
}

32. Изменить текст кнопки «Добавить в корзину»

/**
* Change the add to cart text on single product pages
*/
function woo_custom_cart_button_text() {
    return __('My Button Text', 'woocommerce');
}
add_filter('single_add_to_cart_text', 'woo_custom_cart_button_text');



/**
* Change the add to cart text on product archives
*/
function woo_archive_custom_cart_button_text() {
    return __( 'My Button Text', 'woocommerce' );
}
add_filter( 'add_to_cart_text', 'woo_archive_custom_cart_button_text' );

33. Перенаправление на страницу оформления заказа при добавлении подписки в корзину
Этот сниппет работает только с плагином подписок от WooCommerce
https://www.woothemes.com/products/woocommerce-subscriptions/

/**
* Redirect subscription add to cart to checkout page
*
* @param string $url
*/
function custom_add_to_cart_redirect( $url ) {

  $product_id    = (int) $_REQUEST['add-to-cart'];
    if ( class_exists( 'WC_Subscriptions_Product' ) ) {
        if ( WC_Subscriptions_Product::is_subscription( $product_id ) ) {
            return get_permalink(get_option( 'woocommerce_checkout_page_id' ) );
        } else return $url;
    } else return $url;
 
}
add_filter('add_to_cart_redirect', 'custom_add_to_cart_redirect');

34. Перенаправить на страницу оформления заказа после добавления товара в корзину

/**
* Redirect subscription add to cart to checkout page
*
* @param none
*/
function add_to_cart_checkout_redirect() {
    wp_safe_redirect( get_permalink( get_option( 'woocommerce_checkout_page_id' ) ) );
    die();
}
add_action( 'woocommerce_add_to_cart',  'add_to_cart_checkout_redirect', 11 );

35. Направлять копии всех электронных сообщений вторичным получателям

/**
* WooCommerce Extra Feature
* --------------------------
*
* Add another email recipient to all WooCommerce emails
*
*/
function woo_cc_all_emails() {
  return 'Bcc: youremail@yourdomain.com' . "\r\n";
}
add_filter('woocommerce_email_headers', 'woo_cc_all_emails' );

36. Посылать электронное сообщение каждый раз, когда оформлен новый заказ с использованием купонов

/**
* WooCommerce Extra Feature
* --------------------------
*
* Send an email each time an order with coupon(s) is completed
* The email contains coupon(s) used during checkout process
*
*/
function woo_email_order_coupons( $order_id ) {
        $order = new WC_Order( $order_id );
     
        if( $order->get_used_coupons() ) {
     
          $to = 'youremail@yourcompany.com';
            $subject = 'New Order Completed';
            $headers = 'From: My Name ' . "\r\n";
         
            $message = 'A new order has been completed.\n';
            $message .= 'Order ID: '.$order_id.'\n';
            $message .= 'Coupons used:\n';
         
            foreach( $order->get_used_coupons() as $coupon) {
                $message .= $coupon.'\n';
            }
            @wp_mail( $to, $subject, $message, $headers );
        }
}
add_action( 'woocommerce_thankyou', 'woo_email_order_coupons' );

37. Изменить количество похожих товаров

/**
* WooCommerce Extra Feature
* --------------------------
*
* Change number of related products on product page
* Set your own value for 'posts_per_page'
*
*/
function woo_related_products_limit() {
  global $product;
 
    $args = array(
        'post_type'                => 'product',
        'no_found_rows'            => 1,
        'posts_per_page'           => 6,
        'ignore_sticky_posts'     => 1,
        'orderby'                 => $orderby,
        'post__in'                => $related,
        'post__not_in'            => array($product->id)
    );
    return $args;
}
add_filter( 'woocommerce_related_products_args', 'woo_related_products_limit' );

38. Убрать товары определенной категории с главной страницы магазина

/**
* Remove products from shop page by category
*
*/
function woo_custom_pre_get_posts_query( $q ) {
    if ( ! $q->is_main_query() ) return;
    if ( ! $q->is_post_type_archive() ) return;
 
    if ( ! is_admin() && is_shop() ) {
        $q->set( 'tax_query', array(array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => array( 'shoes' ), // Don't display products in the shoes category on the shop page
            'operator' => 'NOT IN'
        )));
 
    }
    remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );
}
add_action( 'pre_get_posts', 'woo_custom_pre_get_posts_query' );

39. Изменить количество колонок в каталоге товаров

/**
* WooCommerce Extra Feature
* --------------------------
*
* Change product columns number on shop pages
*
*/
function woo_product_columns_frontend() {
    global $woocommerce;

    // Default Value also used for categories and sub_categories
    $columns = 4;

    // Product List
    if ( is_product_category() ) :
        $columns = 4;
    endif;

    //Related Products
    if ( is_product() ) :
        $columns = 2;
    endif;

    //Cross Sells
    if ( is_checkout() ) :
        $columns = 4;
    endif;

    return $columns;
}
add_filter('loop_shop_columns', 'woo_product_columns_frontend');

40. Отключить вкладки WooCommerce (отключение табов «описание», «отзывы», «дополнительная информация»)

/**
* Remove product tabs
*
*/
function woo_remove_product_tab($tabs) {

    unset( $tabs['description'] );              // Remove the description tab
    unset( $tabs['reviews'] );                     // Remove the reviews tab
    unset( $tabs['additional_information'] );      // Remove the additional information tab

     return $tabs;
}
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tab', 98);

41. Удаление «хлебных крошек»

/**
* Remove WooCommerce BreadCrumb
*
*/
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);

42. Ограничить список стран, в которые осуществляется доставка

/**
* WooCommerce Extra Feature
* --------------------------
*
* Restrict shipping countries list
*
*/
function woo_override_checkout_fields( $fields ) {

    $fields['shipping']['shipping_country'] = array(
        'type'      => 'select',
        'label'     => __('My New Country List', 'woocommerce'),
        'options'     => array('AU' => 'Australia')
    );

    return $fields;
}
add_filter( 'woocommerce_checkout_fields' , 'woo_override_checkout_fields' );

43. Изменить ярлык «бесплатно» на что-то свое

/**
* WooCommerce Extra Feature
* --------------------------
*
* Replace "Free!" by a custom string
*
*/
function woo_my_custom_free_message() {
    return "This product is FREE!";
}

add_filter('woocommerce_free_price_html', 'woo_my_custom_free_message');

44. Скрыть все другие способы доставки, если доступна бесплатная доставка

// Hide ALL shipping options when free shipping is available
add_filter( 'woocommerce_available_shipping_methods', 'hide_all_shipping_when_free_is_available' , 10, 1 );
/**
* Hide ALL Shipping option when free shipping is available
*
* @param array $available_methods
*/
function hide_all_shipping_when_free_is_available( $available_methods ) {
      if( isset( $available_methods['free_shipping'] ) ) :
     
        // Get Free Shipping array into a new array
        $freeshipping = array();
        $freeshipping = $available_methods['free_shipping'];
        // Empty the $available_methods array
        unset( $available_methods );
        // Add Free Shipping back into $avaialble_methods
        $available_methods = array();
        $available_methods[] = $freeshipping;
    endif;
    return $available_methods;
}

45. Сделать поле «Штат» в форме оформления заказа необязательным для заполнения

/**
* WooCommerce Extra Feature
* --------------------------
*
* Make "state" field not required on checkout
*
*/
add_filter( 'woocommerce_billing_fields', 'woo_filter_state_billing', 10, 1 );
add_filter( 'woocommerce_shipping_fields', 'woo_filter_state_shipping', 10, 1 );

function woo_filter_state_billing( $address_fields ) {
    $address_fields['billing_state']['required'] = false;
    return $address_fields;
}

function woo_filter_state_shipping( $address_fields ) {
    $address_fields['shipping_state']['required'] = false;
    return $address_fields;
}

46. Запрограммировать создание купона

$coupon_code = 'UNIQUECODE'; // Code
$amount = '10'; // Amount
$discount_type = 'fixed_cart'; // Type: fixed_cart, percent, fixed_product, percent_product
                 
$coupon = array(
    'post_title' => $coupon_code,
    'post_content' => '',
    'post_status' => 'publish',
    'post_author' => 1,
    'post_type'        => 'shop_coupon'
);
                 
$new_coupon_id = wp_insert_post( $coupon );
                 
// Add meta
update_post_meta( $new_coupon_id, 'discount_type', $discount_type );
update_post_meta( $new_coupon_id, 'coupon_amount', $amount );
update_post_meta( $new_coupon_id, 'individual_use', 'no' );
update_post_meta( $new_coupon_id, 'product_ids', '' );
update_post_meta( $new_coupon_id, 'exclude_product_ids', '' );
update_post_meta( $new_coupon_id, 'usage_limit', '' );
update_post_meta( $new_coupon_id, 'expiry_date', '' );
update_post_meta( $new_coupon_id, 'apply_before_tax', 'yes' );
update_post_meta( $new_coupon_id, 'free_shipping', 'no' );

47. Изменить строчку «Тема» в электронном письме

/*
* Subject filters:
*   woocommerce_email_subject_new_order
*   woocommerce_email_subject_customer_procesing_order
*   woocommerce_email_subject_customer_completed_order
*   woocommerce_email_subject_customer_invoice
*   woocommerce_email_subject_customer_note
*   woocommerce_email_subject_low_stock
*   woocommerce_email_subject_no_stock
*   woocommerce_email_subject_backorder
*   woocommerce_email_subject_customer_new_account
*   woocommerce_email_subject_customer_invoice_paid
**/
add_filter('woocommerce_email_subject_new_order', 'change_admin_email_subject', 1, 2);
function change_admin_email_subject( $subject, $order ) {
    global $woocommerce;
    $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
    $subject = sprintf( '[%s] New Customer Order (# %s) from Name %s %s', $blogname, $order->id, $order->billing_first_name, $order->billing_last_name );
    return $subject;
}

48. Добавление суммы таможенного сбора на странице «Корзина»

/**
* WooCommerce Extra Feature
* --------------------------
*
* Add custom fee to cart automatically
*
*/
function woo_add_cart_fee() {

    global $woocommerce;
 
    if ( is_cart() ) {
        $woocommerce->cart->add_fee( __('Custom', 'woocommerce'), 5 );
    }
 
}
add_action( 'woocommerce_before_cart_table', 'woo_add_cart_fee' );

49. Добавление собственного сообщения на странице «Корзина»

/**
* Custom Add To Cart Messages
* Add this to your theme functions.php file
**/
add_filter( 'woocommerce_add_to_cart_message', 'custom_add_to_cart_message' );
function custom_add_to_cart_message() {
    global $woocommerce;
    // Output success messages
    if (get_option('woocommerce_cart_redirect_after_add')=='yes') :
        $return_to     = get_permalink(woocommerce_get_page_id('shop'));
        $message     = sprintf('<a href="%s" class="button">%s</a> %s', $return_to, __('Continue Shopping &rarr;', 'woocommerce'), __('Product successfully added to your cart.', 'woocommerce') );
    else :
        $message     = sprintf('<a href="%s" class="button">%s</a> %s', get_permalink(woocommerce_get_page_id('cart')), __('View Cart &rarr;', 'woocommerce'), __('Product successfully added to your cart.', 'woocommerce') );
    endif;
        return $message;
}

50. Добавить способ оплаты в email-уведомление для администратора

/**
* WooCommerce Extra Feature
* --------------------------
*
* Add payment method to admin new order email
*
*/
add_action( 'woocommerce_email_after_order_table', 'woo_add_payment_method_to_admin_new_order', 15, 2 );

function woo_add_payment_method_to_admin_new_order( $order, $is_admin_email ) {
    if ( $is_admin_email ) {
    echo '<p><strong>Payment Method:</strong> ' . $order->payment_method_title . '</p>';
    }
}

 

Поделиться ссылкой:

[Всего голосов: 0    Средний: 0/5]

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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

Принять
WhatsApp WhatsApp