Время чтения: [rt_reading_time] мин. 20 марта 2018 в 19:35 Woocommerce
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

Добавляем пользовательские поля WooCommerce

WooCommerce , без сомнения, является более мощным плагином для электронной коммерции для WordPress. И то, что я люблю с WooCommerce, это то, что для почти всех есть API . Сегодня я решил показать вам, как вы можете динамически настраивать WooCommerce и, в частности, добавлять пользовательские поля в любые продукты WooCommerce. Вот окончательный результат того, что вы научитесь делать в этом посте:

Как вы можете на скриншоте выше, мы увидим, как добавить пользовательские поля на страницу выпуска продукта. Для этого мы будем работать только с файлом functions.php только в папке вашей темы.

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

Правильные крючки

Первый шаг — связать действие с  woocommerce_product_options_general_product_data . Функция, связанная с этим крюком, будет отвечать за отображение новых полей. Для сохранения значений полей будет учитываться второй крючок:  woocommerce_process_product_meta . В основном эти два действия будут выполнены с использованием этого кода:

Добавление новых полей

Фрагмент выше связывает две пользовательские функции с правильными крючками. Теперь нам нужно создать эти функции. Давайте начнем с первого,  woo_add_custom_general_fields () , который создаст поля. Вот как будет выглядеть функция

Для создания наших полей мы будем в основном использовать встроенную функцию WooCommerce (все эти функции находятся в WooCommerce / Admin / WritePanels / writepanels-init.php.):

Тип текстового поля

Чтобы создать тип текстового поля, вам нужно будет использовать этот код:

 

Обратите внимание на использование  desc_tip, чтобы отобразить эти маленькие симпатичные пузырьки справа от поля вместо отображения описания поля по умолчанию. Этот атрибут работает для каждого типа поля.

Тип поля поля

Чтобы создать тип поля номера, вам нужно будет использовать этот код:

Основное отличие здесь — это  атрибут типа, установленный на число . Вы также можете определить настраиваемые атрибуты, такие как шаг и мин, или даже макс. В приведенном выше коде шаг является значением по умолчанию (1), а значение min равно нулю. В основном это означает, что мы ожидаем здесь положительного значения (по крайней мере, больше нуля).

Тип поля Textarea

Чтобы создать текстовое поле, здесь используется код:

Здесь нет ничего сложного …

Выпадающее поле Тип поля

Чтобы создать раскрывающийся список, используйте следующий код:

В опции атрибуты определяют доступные параметры в массиве.

Тип поля флажка

Чтобы создать флажок, используйте следующий код:

Скрытый тип поля

Вы также можете создавать скрытые поля со следующим кодом:

Продукты Выберите тип поля

Существует очень хороший способ создать индивидуальный выпадающий список для продуктов WooCommerce с этим кодом:

Пользовательский тип поля

Вы также можете создавать настраиваемые поля. В приведенном ниже примере я создал «двойное поле». Вы можете настроить этот код и использовать столько полей, сколько хотите, которые будут объединены в один массив:


Пользовательские поля могут быть почти во всем, просто убедитесь, что вы используете класс поля формы, чтобы сделать их красивыми!

Сохранение значений полей

Теперь, когда вы создали свои поля продукта WooCommerce, вам нужно создать функцию для сохранения своих значений после изменения кнопки обновления или публикации. Как мы видели ранее, мы будем использовать функцию  woo_add_custom_general_fields_save (), подключенную к  woocommerce_process_product_meta . В принципе идея этой функции довольно проста: мы проверяем, пустое ли поле, и если мы не создаем мета-сообщение с помощью update_post_meta () . Обратите внимание, что мы используем  esc_attr () и esc_html (), чтобы немного защитить данные. Вот код для сохранения значений каждого типа поля:

Вот результат:

Получить значения полей

Теперь, когда мы успешно создали наши поля и сохранили их значения, я думаю, вы хотели бы отображать эти значения в интерфейсе. В этом случае лучшим способом было бы работать с пользовательскими шаблонами WooCommerce. В основном пользовательский шаблон позволяет вам переопределять файлы по умолчанию WooCommerce и вместо этого использовать свои собственные файлы. Ниже приведено краткое руководство, в котором объясняется, как создавать свои настраиваемые шаблоны: http://docs.woothemes.com/document/template-structure/

Чтобы получить эти значения, нам просто нужно использовать популярную функцию get_post_meta () . Это почти все, что вам нужно.

Пример:

Создание пользовательских вкладок

Наконец, это быстрый фрагмент для создания пользовательской вкладки продукта:

 

Я рекомендую вам стиль вашей вкладки, используя немного CSS (просто добавьте хороший значок, и все готово!).

Еще кое-что

Еще одна вещь: если вы хотите добавить свои поля на любую другую вкладку, кроме общей, вам просто нужно изменить имя крючка, с которым вы связали свою  функцию woo_add_custom_general_fields () . В примере Fo используйте этот крючок  woocommerce_product_options_shipping, чтобы добавить поля на вкладку «Доставка». Вы можете найти все доступные крючки в   woocommerce / admin / post-types / writepanels / writepanel-product_data.php .

Похожие статьи

Кнопка связи phone Хотите перезвоним вам в удобное время?
Оставить заявку
Заполните поля ниже. Маркетолог свяжется с Вами в ближайшее время для обсуждения деталей.

Представьтесь, пожалуйста: *

Как с вами связаться? *

Контактный номер телефона: *

Введите контактный E-mail: *

Вкратце опишите свою деятельность и причину обращения: *

Запрос демо версии
Заполните поля ниже. Я пришлю Вам демо версию в ближайшее время.

Представьтесь, пожалуйста: *

Как с вами связаться? *

Контактный номер телефона: *

Введите контактный E-mail: *

[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
[contact-form-7 404 "Not Found"]
Запись на бесплатный урок
Введите ваше имя, телефон и e-mail.
Я свяжусь с Вами для уточнения времени прохождения урока.

Как вас зовут *

Как с вами связаться? *

Введите контактный телефон *

Введите контактный E-mail *

[contact-form-7 404 "Not Found"]
Заказать сайт
Первые 14 дней бесплатно. Оставьте номер email и контактный телефон. Я лично перезвоню Вам в течение 10 минут, для обсуждения деталей.


Ваш email

Введите контактный телефон

Комментарий или вопрос

Проблемы с оплатой?
Опишите ситуацию. Когда возникает проблема? Что планируете купить?

Введите ваше имя *

Введите контактный email *

Что необходимо доработать

Скачать чек-лист
Заполните поля ниже. В течение 10 минут на указанный e-mail будет отправлена ссылка на скачивание чек-листа.

Введите ваше имя *

Введите контактный E-mail *

[contact-form-7 404 "Not Found"]
Заказать обратный звонок
Я свяжусь с Вами в течение 10 минут и отвечу на все Ваши вопросы.

Введите ваше имя *

Как с вами связаться? *

Введите контактный телефон *

Степень загрузки
В данном разделе представлена моя занятость в данный момент. Данные обновляются каждый день. Вся работа выполняется по предварительной записи и 20% предоплатой от стоимости проекта.
низкая загрузка. выполняется ~5 заказов. старт работ через 5 дней.
средняя загрузка. выполняется ~15 заказов. старт работ через 20 дней.
высокая загрузка. заказы временно не принимаются.
Задать вопрос
У вас есть вопросы адресованный интернет-маркетологу? А у меня ответы, добро пожаловать! И да, это бесплатно. Я отвечу вам в течение 24 в разделе вопрос-ответ.
[contact-form-7 404 "Not Found"]
Работаю удаленно, в вашем городе Абакан, Абинск, Аксай, Александровское, Алексин, Альметьевск, Анапа, Ангарск, Апшеронск, Арзамас, Армавир, Архангельск, Ачинск, Балаково, Балашиха, Балашов, Барнаул, Батайск, Белая Калитва, Белгород, Белореченск, Березники, Бийск, Благовещенск, Благодарный, Борисоглебск, Братск, Бронницы, Брюховецкая, Брянск, Бугульма, Буденновск, Бузулук, Великие Луки, Великий Новгород, Владивосток, Владикавказ, Владимир, Волгоград, Волгодонск, Волжский, Вологда, Волхов, Воркута, Воронеж, Воскресенск, Выборг, Выкса, Выселки, Гатчина, Геленджик, Георгиевск, Горно Алтайск, Грозный, Губкин, Гудермес, Гуково, Гусь Хрустальный, Десногорск, Дзержинск, Димитровград, Дмитров, Домодедово, Донецк, Ейск, Екатеринбург, Елец, Ессентуки, Железногорск, Железногорск Красноярский край, Железнодорожный, Зеленоград, Зеленокумск, Иваново, Ивантеевка, Ижевск, Изобильный, Ипатово, Иркутск, Йошкар Ола, Казань, Калуга, Каменск Шахтинск, Камышин, Каневская, Кашира, Кемерово, Кинешма, Кириши, Киров, Клин, Клинцы, Ковров, Коломна, Комсомольск на Амуре, Кореновск, Королёв, Кострома, Котлас, Красногорск, Краснодар, Красноярск, Крымск, Кстово, Кузнецк, Курган, Курганинск, Курск, Кущевская, Лабинск, Ленинградская, Ленинск Кузнецкий, Ливны, Липецк, Лобня, Лысьва, Лыткарино, Люберцы, Москва, Магнитогорск, Майкоп, Междуреченск, Миасс, Миллерово, Минеральные воды, Михайловск, Мичуринск, Можайск, Мончегорск, Морозовск, Мостовской, Мурманск, Муром, Мытищи, Набережные Челны, Назрань, Нальчик, Находка, Невинномысск, Нерюнгри, Нефтекамск, Нефтекумск, Нефтеюганск, Нижневартовск, Нижнекамск, Нижний Новгород, Нижний Тагил, Новоалександровск, Новокузнецк, Новомосковск, Новороссийск, Новосибирск, Новочеркасск, Новошахтинск, Норильск, Ноябрьск, Нягань, Одинцово, Октябрьский, Омск, Орёл, Оренбург, Орехово Зуево, Орск, Отрадная, Павловская, Павловский Посад, Пенза, Пермь, Петрозаводск, Петропавловск Камчатский, Подольск, Приморско Ахтарск, Прокопьевск, Псков, Пушкино, Пятигорск, Раменское, Реутов, Россошь, Ростов на Дону, Рыбинск, Рязань, Санкт Петербург, Сальск, Самара, Саранск, Саратов, Саянск, Светлоград, Северодвинск, Северская, Сергиев Посад, Серов, Серпухов, Славянск на Кубани, Смоленск, Солнечногорск, Сочи, Ставрополь, Староминская, Старый Оскол, Стерлитамак, Сургут, Сызрань, Сыктывкар, Таганрог, Тамбов, Тверь, Темрюк, Тимашевск, Тихвин, Тихорецк, Тобольск, Тольятти, Томск, Трудобеликовский, Тула, Тюмень, Улан Удэ, Ульяновск, Усинск, Усолье Сибирское, Уссурийск, Усть Илимск, Усть Лабинск, Уфа, Ухта, Фрязино, Хабаровск, Ханты Мансийск, Чебоксары, Челябинск, Череповец, Чехов, Чита, Шахты, Шелехов, Щёлково, Электросталь, Энгельс, Южно Сахалинск, Якутск, Ярославль и регион Амурская область, Камчатский край, Приморский край, Республика Саха Якутия, Сахалинская область, Хабаровский край, Кировская область, Нижегородская область, Оренбургская область, Пензенская область, Пермский край, Республика Башкортостан Октябрьский и Нефтекамск, Республика Башкортостан Уфа, Республика Марий Эл, Республика Мордовия, Республика Татарстан, Республика Татарстан Казань, Республика Удмуртия, Республика Чувашия, Самарская область, Саратовская область, Ульяновская область, Архангельская область, Вологодская область, Мурманская область, Новгородская область, Псковская область, Республика Карелия, Республика Коми Воркута и Усинск, Республика Коми Сыктывкар, Республика Ингушетия, Республика Кабардино Балкария, Республика Северная Осетия Алания, Ставропольский край, Чеченская Республика, Алтайский край, Забайкальский край, Иркутская область, Кемеровская область, Красноярский край, Красноярский край Норильск, Новосибирская область, Омская область, Республика Алтай, Республика Бурятия, Республика Хакасия, Томская область, Курганская область, Свердловская область, Тюменская область, Ханты Мансийский АО, Челябинская область, Ямало Ненецкий АО, Белгородская область, Брянская область, Владимирская область, Воронежская область, Ивановская область, Калужская область, Костромская область, Курская область, Липецкая область, Орловская область, Рязанская область, Смоленская область, Тамбовская область, Тверская область, Тульская область, Ярославская область, Волгоградская область, Краснодарский край, Республика Адыгея, Ростовская область. Обращайтесь!