Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/32: Рейтинг темы: голосов - 32, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 3

Тонкая настройка WooCommerce

16.12.2013, 20:55. Показов 6565. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

В общем-то дело такое: решил сделать магазин на WordPress + WooCommerce, но столкнулся с таким неприятным моментом как необходимость заполнения всех полей при самовывозе.

Я хочу от этого избавиться, вопрос - как этого добиться?

Поля адреса в WooCommerce - array, то есть они добавляются и хранятся в базе данных. Ничего в исходных PHP файлах ядра системы я не нашёл.

Моя идея состоит в том, чтоб при выборе через input значения Самовывоз, к этому полю input приписать

HTML5
1
onclick="showHide('block_id')"
При клике на этот метод доставки соответственно лишние поля скрывались при помощи style="display: none"

Единственное, что я нашёл пока более-менее подходящее это:
PHP
1
2
3
4
5
add_filter('woocommerce_billing_fields', 'custom_woocommerce_billing_fields');
function custom_woocommerce_billing_fields( $fields ) {
$fields['billing_address_1']['class'] = array( 'form-row-wide' ); /*Сделали широким поле адреса*/
return $fields;
}
Вот исходный код всех полей:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<p class="form-row form-row-first validate-required" id="billing_first_name_field"><label for="billing_first_name" class="">Имя <abbr class="required" title="обязательно">*</abbr></label><input type="text" class="input-text" name="billing_first_name" id="billing_first_name" placeholder=""  value=""  />
                </p>
 
    <p class="form-row form-row-last" id="billing_last_name_field"><label for="billing_last_name" class="">Фамилия</label><input type="text" class="input-text" name="billing_last_name" id="billing_last_name" placeholder=""  value=""  />
                </p><div class="clear"></div>
 
    <p class="form-row form-row-wide address-field" id="billing_address_1_field"><label for="billing_address_1" class="">Адрес</label><input type="text" class="input-text" name="billing_address_1" id="billing_address_1" placeholder="Почтовый адрес"  value=""  />
                </p>
 
    <p class="form-row form-row-wide address-field" id="billing_address_2_field"><input type="text" class="input-text" name="billing_address_2" id="billing_address_2" placeholder="Квартира, комната, блок и т.д. (опционально)"  value=""  />
                </p>
 
    <p class="form-row form-row-wide address-field" id="billing_city_field"><label for="billing_city" class="">Город</label><input type="text" class="input-text" name="billing_city" id="billing_city" placeholder="Город"  value=""  />
                </p>
 
    <p class="form-row form-row-first address-field" id="billing_state_field"><label for="billing_state" class="">Область, Район</label><input type="text" class="input-text" value=""  placeholder="Область, Район" name="billing_state" id="billing_state"  /></p>
 
    <p class="form-row form-row-last address-field" id="billing_postcode_field"><label for="billing_postcode" class="">Почтовый индекс</label><input type="text" class="input-text" name="billing_postcode" id="billing_postcode" placeholder="Почтовый индекс"  value=""  />
                </p><div class="clear"></div>
 
    <p class="form-row form-row-first validate-required" id="billing_email_field"><label for="billing_email" class="">Email-адрес <abbr class="required" title="обязательно">*</abbr></label><input type="text" class="input-text" name="billing_email" id="billing_email" placeholder=""  value="info@crazydeerz.ru"  />
                </p>
 
    <p class="form-row form-row-last validate-required" id="billing_phone_field"><label for="billing_phone" class="">Телефон <abbr class="required" title="обязательно">*</abbr></label><input type="text" class="input-text" name="billing_phone" id="billing_phone" placeholder=""  value=""  />
                </p><div class="clear"></div>
И вот выбор способа доставки:
HTML5
1
2
3
4
<tr class="shipping">
                    <th>Способ доставки</th>
                    <td><select name="shipping_method" id="shipping_method"><option value="local_pickup"  selected='selected'>Самовывоз (Бесплатно)</option><option value="local_delivery" >Доставка по г. Москве: <span class="amount">300&nbsp;руб.</span></option></select></td>
                </tr>
В общем, помогите мне показать этой штуке кто в доме хозяин!)

Добавлено через 11 минут
А, забыл самое главное. В исходном PHP файле это выглядит следующим образом:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
 * Checkout billing information form
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.0.0
 */
 
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
 
global $woocommerce;
?>
 
<?php if ( $woocommerce->cart->ship_to_billing_address_only() && $woocommerce->cart->needs_shipping() ) : ?>
 
    <h3><?php _e( 'Заказ и оплата товара', 'theme' ); ?></h3>
 
<script>
function show(divid) {
 if(document.getElementById(divid).style.display == "none") 
 {
 document.getElementById(divid).style.display = "block"; 
 }
 else
 {
 document.getElementById(divid).style.display = "none";
 }
 }
</script>
 
<?php else : ?>
 
    <h3><?php _e( 'Адрес покупателя', 'theme' ); ?></h3>
 
<?php endif; ?>
 
<?php do_action('woocommerce_before_checkout_billing_form', $checkout ); ?>
 
<?php foreach ($checkout->checkout_fields['billing'] as $key => $field) : ?>
 
    <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
 
<?php endforeach; ?>
 
<?php do_action('woocommerce_after_checkout_billing_form', $checkout ); ?>
 
 
 
<?php if ( ! is_user_logged_in() && $checkout->enable_signup ) : ?>
 
    <?php if ( $checkout->enable_guest_checkout ) : ?>
 
        <p class="form-row form-row-wide">
            <input class="input-checkbox" id="createaccount" <?php checked($checkout->get_value('createaccount'), true) ?> type="checkbox" name="createaccount" value="1" /> <label for="createaccount" class="checkbox"><?php _e( 'Создать аккаунт?', 'theme' ); ?></label>
        </p>
 
    <?php endif; ?>
 
    <?php do_action( 'woocommerce_before_checkout_registration_form', $checkout ); ?>
 
    <div class="create-account">
 
        <p><?php _e( 'Чтоб создать новый аккаунт проверьте информацию ниже. Если вы уже совершали покупки в нашем магазине - используйте форму для авторизации во вкладке Мой Аккаунт', 'theme' ); ?></p>
 
        <?php foreach ($checkout->checkout_fields['account'] as $key => $field) : ?>
 
            <?php woocommerce_form_field( $key, $field, $checkout->get_value( $key ) ); ?>
 
        <?php endforeach; ?>
 
        <div class="clear"></div>
 
    </div>
 
    <?php do_action( 'woocommerce_after_checkout_registration_form', $checkout ); ?>
 
<?php endif; ?>
Не хочу делать стомиллионов изменений в разных файлах, я думаю здесь достаточно обойтись каким-нибудь скриптом меняющим исходный HTML на необходимые мне значения.

В частности, при самовывозе хочу оставить Имя, E-mail, Телефон
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2013, 20:55
Ответы с готовыми решениями:

Тонкая настройка woocommerce
Привет, помогите плиз добавить вкладку. Когда заходишь в описания товара там есть вкладки &quot;описание товара&quot; и &quot;отзывы&quot;,...

Настройка Woocommerce, автоматический подсчет цены
Здравствуйте, помогите с решением, нужен автоматический подсчет цены на Woocommerce как на сайте (Коробка, наличник, добор): ...

Настройка фильтров товаров для woocommerce
Здравствуйте, ребята. В процессе настройки woocommerce для wordpress у меня возникла следующая проблема. Я установил woocommerce на...

4
0 / 0 / 0
Регистрация: 16.12.2013
Сообщений: 3
18.12.2013, 14:47  [ТС]
Тему можно удалять
0
vermel
17.05.2014, 21:34
Подскажите, как решили задачу? То же самое нужно. Спасибо!
1 / 1 / 0
Регистрация: 04.08.2014
Сообщений: 6
22.08.2014, 13:04
Да, подскажите, пжлст, как решили задачу?
Нужно тоже самое.
1
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 1
19.04.2017, 01:02
JavaScript
1
2
3
4
5
6
7
8
9
10
11
<script> 
$(document).on("click", "input:radio[name='shipping_method[0]']", function() { 
var shipping = $(this).val(), 
$addressField = $("#billing_address_1_field"); 
if(shipping == "wcso_local_shipping") { 
$addressField.hide(); 
} else{ 
$addressField.show(); 
} 
});
</script>
Так сделал и все заработало!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.04.2017, 01:02
Помогаю со студенческими работами здесь

Плагин Woocommerce - настройка варьируемого товара: как настроить отображение материала?
Друзья, всем добра желаю! Решил сделать товар варьируемым (с возможностью выбрать варианты): например у материала есть разная ёмкость, и...

Тонкая настройка прав ЛС. Не нашел ни в одном CMS. Пожалуйста, выручайте!
Подскажите, пожалуйста, есть ли возможность через настройки или мод способный решить следующую задачу: Есть две группы: 1) Продавцы ...

Тонкая настройка проекта
Здравствуйте! Имеется достаточно большой проект. После его сборки пусковой файл вместе с МОС файлами и т.п., по умолчанию, распологаются...

GitHub тонкая настройка
Добрый день, я не смог найти куда точно задать вопрос, но раз уж пишу на php задам сюда. Задача состоит в том что бы разграничить...

Тонкая настройка показа объявления
Можно ли как-нибудь рулить настройкой размера шрифта, например, сделать разными размер заголовка объявления и текста? Есть что-нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru