• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

    Мы активно растущий клуб по WordPress и нам нужна помощь каждого человека, в том числе и Ваша! Не стесняйтесь и станьте частью большого сообщества.
    Мы делимся новостями, отытом и полезными советами! Пройдите простую регистрацию, чтобы пользоваться всеми возможностями нашего клуба.

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Решено В каком файле дописать Отчество

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Вообще не правильный подход, извините если поднял мертвую тему. Ставите плагин Saphali Woocommerce Russian и добавляете нужное поле. Это правильный вариант и есть еще один так же по сути но ручками если надо напишу
 

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Wildcdu, Не соглашусь, что это вообще не правильный вариант. Может быть не лучший, это да. Вот если напишешь как сделать ручками, что бы при обновлении не затиралось вот это будет правильно. А так не вижу смысла ставить непонятный плагин. Покупал его когда он был ещё платный Saphali Woocommerce Russian, потом 80% от него появилось в Woocommerce по умолчанию(видимо после этого появилась версия lite) и надобность в нем отпала полностью. Зачем нагружать сайт лишним плагином.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
все в файле functions.php

Код:
// ---Перехватываем---
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// ---Перехватываем пропускаем через фильтр---
function custom_override_checkout_fields( $fields ) {
    $fields['order']['order_comments']['placeholder'] = 'Новый текст в примечании к товару';
     $fields['order']['order_comments']['label'] = 'Новое название этого поля';
     return $fields;
}
Делаем не обязательными поля

Код:
add_filter( 'woocommerce_checkout_fields' , 'no_required_checkout_fields' );
 function no_required_checkout_fields( $fields ) {
 $fields['billing']['billing_last_name']['required'] = false;
 $fields['billing']['billing_address_1']['required'] = false;
 $fields['billing']['billing_city']['required'] = false;
 $fields['billing']['billing_postcode']['required'] = false;
 return $fields;
 }
Удаляем поле:

Код:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {

unset($fields['billing']['billing_first_name']); // удаляем поле с именем
return $fields;
}
добавляем выбор опций:

Код:
$fields['billing']['your_field']['options'] = array(
  'option_1' => 'Текст опции 1',
  'option_2' => 'Текст опции 1'
);
Изменение количества товара на одной странице:
Код:
add_filter('loop_shop_per_page', create_function('$cols', 'return 20;'));
Изменить количество товара в колонке:

Код:
add_filter('loop_shop_columns', 'loop_columns');
 if (!function_exists('loop_columns')) {
 function loop_columns() {
 return 35;
 }
 }
Меняем количество рекомендованного товара:
цифры это колонки и товар

Код:
remove_action( 'woocommerce_after_single_product', 'woocommerce_upsell_display');
add_action( 'woocommerce_after_single_product', 'woocommerce_output_upsells', 20);
if (!function_exists('woocommerce_output_upsells')) {
function woocommerce_output_upsells() {
woocommerce_upsell_display(3,3); // 3 товара в 3 колонки
}
}
Меняем количество сопутствуещего товара:

Код:
function woocommerce_output_related_products() {
 woocommerce_related_products(3,3); // 3 товара а 3 колонки
 }
Обертка wrapper для не совместимых шаблонов (данную функцию лично не проверял):

Код:
remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10); // Убираем
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
add_action('woocommerce_before_main_content', create_function('', 'echo "<div id=\"contentwrapper\"><div id=\"content\">";'), 10);
function divandsidebar_function(){
echo "</div></div>";
get_sidebar('left'); // после вызываем sidebar-left.php
}
add_action('woocommerce_after_main_content', 'divandsidebar_function', 10);
список полей:

  • billing (ОПЛАТА)
    • 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
  • shipping (ДОСТАВКА)
    • shipping_first_name
    • shipping_last_name
    • shipping_company
    • shipping_address_1
    • shipping_address_2
    • shipping_city
    • shipping_postcode
    • shipping_country
    • shipping_state
  • account (АККАУНТ)
    • account_username
    • account_password
    • account_password-2
  • order (ЗАКАЗ)
    • order_comments
Каждое поле содержит массив свойств:
  • type – тип (text, textarea, password, select)
  • label – название для поля ввода
  • placeholder – плейсхолдер (placeholder) для поля ввода
  • class – класс для поля ввода
  • required – true или false, в зависимости от того, является ли поле обязательным
  • clear – true или false, применяет clear fix к полю/его названию
  • label_class – класс для элемента названия поля (label)
  • options – для блоков выбора,массив опций (пары key => value)
Иногда нужно будет использовать фильтр "woocommerce_default_address_fields". Фильтр применяется ко всем стандартным полям оплаты и доставки:

  • country
  • first_name
  • last_name
  • company
  • address_1
  • address_2
  • city
  • state
  • postcode
Добавлю фишку (не моя):

Покажем сколько экономии при покупке. (ни как в стандарте)

Код:
// Add save percent next to sale item prices.
add_filter( 'woocommerce_sale_price_html', 'woocommerce_custom_sales_price', 10, 2 );
function woocommerce_custom_sales_price( $price, $product ) {
    $percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    return $price . sprintf( __(' Save %s', 'woocommerce' ), $percentage . '%' );
}
И еще сортировка товара в админке по наличию (блин не удобно когда нет)
Код:
add_filter( 'manage_edit-product_sortable_columns', 'my_product_sorting_column' );
 
function my_product_sorting_column( $columns ) {
    $columns['is_in_stock'] = 'in_stock';
 
    return $columns;
}
add_action( 'pre_get_posts', 'my_product_sorting' );
 
function my_product_sorting( $query ) {
 
    if( ! is_admin() )
        return;
 
    $orderby = $query->get( 'orderby');
 
    if( 'in_stock' == $orderby ) {
        $query->set('meta_key','_stock_status');
        $query->set('orderby','meta_value');
    }
}
 
Последнее редактирование:

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
Wildcdu,
Для вставки кода есть специальные кнопки в редакторе
 
Последнее редактирование:

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120

Попай

АДМИНИСТРАТОР

Попай

АДМИНИСТРАТОР
Сообщения
3,247
И спасибо за развернутый ответ с кучей сниппетов, но где конкретный ответ на вопрос ТС? Нашел только как удалить "Имя".
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
И спасибо за развернутый ответ с кучей сниппетов, но где конкретный ответ на вопрос ТС? Нашел только как удалить "Имя".
могу дописать (тут играет моя пакостная натура) на мой взгляд нужно дать пищу а не решение
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Добавляем
Код:
/**
 * Добавляем поле на страницу оформления заказа
 */
add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
    echo '<div id="my_custom_checkout_field"><h2>' . __('Мое поле') . '</h2>';
    woocommerce_form_field( 'my_field_name', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => __('Заполните это поле'),
        'placeholder'   => __('Введите здесь требуемый текст'),
        ), $checkout->get_value( 'my_field_name' ));
    echo '</div>';
}
проверяем
Код:
/**
 * Выполнение формы заказа
 */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    // Проверяем, заполнено ли поле, если же нет, добавляем ошибку.
    if ( ! $_POST['my_field_name'] )
        wc_add_notice( __( 'Пожалуйста, введите требуемый текст в наше новое замечательное поле.' ), 'error' );
}
Сохраняем
Код:
/**
 * Обновляем метаданные заказа со значением поля
 */
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['my_field_name'] ) ) {
        update_post_meta( $order_id, 'My Field', sanitize_text_field( $_POST['my_field_name'] ) );
    }
}
Покажем в админке
Код:
/**
 * Выводим значение поля на странице редактирования заказа
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('Мое поле').':</strong> ' . get_post_meta( $order->id, 'My Field', true ) . '</p>';
}
добавим в письмо
Код:
/**
* Добавляем поле в письма заказа
**/
add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys');

function my_custom_checkout_field_order_meta_keys( $keys ) {
$keys[‘My Field 1′] = ‘_my_field_1;
$keys[‘My Field 2′] = ‘_my_field_2′;
return $keys;
}
 

Топ поддержки


Сверху