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

Опубликовано: 2023-01-03

Когда вы создаете сложный магазин WooCommerce, вам может потребоваться создать собственные решения для определенных проблем. Одной из таких проблем является отсутствие определенных типов продуктов WooCommerce. Вот почему мы в QuadLayers представили вам наше руководство о том, как создать пользовательский тип продукта WooCommerce для вашего веб-сайта.

Мы рассмотрим, как вы можете определить типы продуктов, включить для них определенные параметры и цены и многое другое. Но сначала давайте посмотрим на типы продуктов WooCommerce и на то, что могут делать пользовательские типы продуктов.

Зачем добавлять пользовательский тип продукта в WooCommerce?

По умолчанию WooCommerce имеет четыре уникальных типа продуктов. Эти:

  • Простой продукт
  • Переменный продукт
  • Внешний/Партнерский
  • Загружаемый продукт

Конечно, с внешними плагинами WooCommerce вы можете добавлять больше типов продуктов, таких как продукты по подписке, продукты с возможностью бронирования, членство и многое другое.

Но что, если вы хотите создать тип продукта, отличный от этих конкретных типов? Если у вас есть особые требования, которым не могут соответствовать типы продуктов WooCommerce по умолчанию, или если вы хотите создать собственный тип продукта, такой как членство или аукционные продукты, без использования стороннего плагина, вы можете создать собственный тип продукта, используя немного кодирование.

Использование пользовательского типа продукта означает добавление различных уникальных настроек к типу продукта. Например, если вам нужен определенный переменный тип продукта и вы можете добавить для него различные настройки видимости или ценообразования, вы можете сделать это с помощью пользовательского типа продукта. Кроме того, вы также можете определить конкретный тип продукта для одного уникального вида продукта и изменить настройки типа продукта, только если хотите.

Независимо от ваших потребностей наличие пользовательского типа продукта дает вам больше гибкости при настройке и определении продуктов, которые вы продаете на своем веб-сайте.

Как создать пользовательский тип продукта WooCommerce?

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

Как только вы поймете основы создания плагинов WordPress в каталоге вашего веб-сайта, откройте каталог установки WP , откройте wp-content/plugins и создайте папку « QuadLayers_custom-product-type ». Для нашей демонстрации мы будем использовать наш каталог localhost.

Создание папок для пользовательского типа продукта WooCommerce

После этого создайте файл с именем « Quadlayers_custom-product-type.php ». Это ваш основной файл, который работает как дверной проем для остальных функций вашего плагина.

Откройте этот файл и вставьте в него следующие строки кода:

 <?php

/**
* Название плагина: Пользовательский тип продукта Quadlayers
* Описание: Код для руководства Quadlayers по созданию пользовательского типа продукта WooCommerce.
*/

если ( ! определено ('ABSPATH') ) {
возвращаться;
} 

добавление кода в основной файл плагина

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

Итак, откройте панель администратора WP и нажмите «Плагины ». Здесь вы должны увидеть новый плагин под названием Quadlayers Custom Product Type. Активируйте его и перейдите к следующему шагу обучения.

активировать плагин пользовательского типа продукта woocommerce

Зарегистрировать пользовательский тип продукта WooCommerce

Далее мы создадим функцию для определения нашего пользовательского типа продукта и зарегистрируем его как тип продукта WooCommerce. Для этого добавьте этот код в основной файл вашего плагина:

 add_action('init', 'register_demo_product_type');
функция register_demo_product_type() {
класс WC_Product_Demo расширяет WC_Product {

публичная функция __construct($product) {
$this->product_type = 'демо';
родитель::__конструкт($продукт);
}
}
}

Это зарегистрирует пользовательский тип продукта с именем demo. Если вы хотите изменить название типа продукта, просто измените текст в $this->product_type = 'demo';

Добавить опцию «Пользовательский продукт WooCommerce».

После этого нам нужно добавить пользовательский тип продукта в раскрывающийся список Тип продукта. Это позволяет выбирать тип вашего продукта при создании или редактировании продукта на панели администратора WP. Добавьте этот код в основной файл вашего плагина, и вы должны увидеть новую опцию в списке типов продуктов.

 add_filter('product_type_selector', 'add_demo_product_type');
функция add_demo_product_type($types){
$types['demo'] = __('Демонстрационный продукт', 'dm_product');
вернуть $типы; 
}

Этот код добавит ваш пользовательский тип продукта в раскрывающийся список данных о продукте с помощью строки $types['demo'] = __('Custom Product Type') . Вы можете изменить текст с Пользовательского типа продукта на что-либо, например Демонстрационный продукт, Пользовательский заказ, Подарочная карта и т. д.

Теперь откройте панель администратора WP и создайте новый продукт. В раскрывающемся меню « Тип продукта » вы должны увидеть новую опцию « Демонстрационный продукт ».

выберите пользовательский тип продукта при создании нового продукта

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

Следующая функция создаст новую вкладку настроек для вашего пользовательского типа продукта. Таким образом, вы можете добавить определенные сведения к типу вашего продукта, которые не используются совместно с другими типами продуктов.

Вставьте эту функцию, чтобы создать вкладку Пользовательские сведения о продукте:

 add_filter('woocommerce_product_data_tabs', 'demo_product_tab');
функция demo_product_tab($tabs) {

$tabs['demo'] = массив(
'label' => __('Демонстрационный продукт', 'dm_product'),
'target' => 'demo_product_options',
'класс' => 'show_if_demo_product',
);
вернуть $ вкладки;
}
}

Не забудьте использовать идентификатор product_type вместо 'demo' в $tabs['demo'] = array , если вы определили свой product_type выше.

Мы использовали три параметра в массиве:

метка: это определяет имя вашей пользовательской вкладки продукта.
target: устанавливает идентификатор, который мы будем использовать для добавления настроек на вкладку.
класс: Это позволяет вам проверить, когда показывать пользовательскую вкладку продукта.

Здесь в параметре класса мы использовали show_if_Demo_product, что означает, что эта вкладка будет отображаться только при выборе вашего пользовательского типа продукта.

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

Добавить поля вкладки «Настраиваемый тип продукта»

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

 add_action('woocommerce_product_data_panels', 'QL_custom_product_options_product_tab_content');

функция QL_custom_product_options_product_tab_content() {
// Не забудьте изменить идентификатор в div с вашей целью на вкладке вашего продукта
?><div class='panel woocommerce_options_panel'><?php
?><div class='options_group'><?php

woocommerce_wp_checkbox(массив(
'id' => '_enable_custom_product',
'label' => __('Включить пользовательский тип продукта'),
));

woocommerce_wp_text_input(
множество(
'id' => 'demo_product_info',
'label' => __('Информация о пользовательском продукте', 'dm_product'),
'заполнитель' => '',
'desc_tip' => 'истина',
'description' => __('Введите информацию о демонстрационном продукте.', 'dm_product'),
'тип' => 'текст'
)
);


?></дел>
</div><?php
}

Это добавит флажок для включения пользовательского типа продукта и пользовательского текстового поля для продукта. Конечно, вы можете добавить дополнительные настройки, используя другие функции WooCommerce, такие как woocommerce_wp_select() для раскрывающегося списка, woocommerce_wp_textarea_input() для текстовой области и многое другое.

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

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

Вы можете узнать больше об этих функциях и о том, как их использовать здесь.

Сохранение настраиваемых полей вкладки типа продукта WooCommerce

Теперь, когда мы создали настройки типа продукта, мы должны сохранить их в нашей базе данных. Это делается с помощью хука woocommerce_process_product_meta. Для этого мы будем использовать следующие строки кода:

 add_action('woocommerce_process_product_meta', 'save_demo_product_settings');

функция save_demo_product_settings($post_id){

$demo_product_info = $_POST['demo_product_info'];

если( !пусто($demo_product_info ) ) {
update_post_meta($post_id, 'demo_product_info', esc_attr($demo_product_info));
}
}

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

сохраненные настройки продукта для пользовательского типа вкладки продукта

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

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

Вы только что создали пользовательский тип продукта для своего веб-сайта, но вам также необходимо указать WooCommerce, какой контент вы хотите, чтобы этот тип продукта имел. Для этого мы будем использовать хук woocommerce_single_product_summary, чтобы добавить информацию о продукте, которую мы добавили на вкладку Custom Product Details.

 add_action('woocommerce_single_product_summary', 'demo_product_front');

функция demo_product_front () {
глобальный $продукт;
если ('демо' == $product->get_type()) { 
echo(get_post_meta($product->get_id(), 'demo_product_info')[0]);
}
}

Убедитесь, что идентификатор вашего типа продукта соответствует коду if ('demo' == $product->get_type() , как мы упоминали выше. Сохранив этот код, вы увидите свои пользовательские сведения о продукте на передней панели.

Полный фрагмент кода

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

 <?php
/**
* Название плагина: QuadLayers Пользовательский тип продукта
* Описание: Плагин для добавления пользовательского типа продукта в WooCommerce.
* Автор: QuadLayers
* URI автора: https://www.quadlayers.com
* Версия: 1.0
*/


определено('ABSPATH') или выйти;

add_action('init', 'register_demo_product_type');
функция register_demo_product_type() {
класс WC_Product_Demo расширяет WC_Product {

публичная функция __construct($product) {
$this->product_type = 'демо';
родитель::__конструкт($продукт);
}
}
}


add_filter('product_type_selector', 'add_demo_product_type');
функция add_demo_product_type($types){
$types['demo'] = __('Демонстрационный продукт', 'dm_product');
вернуть $типы; 
}


add_filter('woocommerce_product_data_tabs', 'demo_product_tab');
функция demo_product_tab($tabs) {

$tabs['demo'] = массив(
'label' => __('Демонстрационный продукт', 'dm_product'),
'target' => 'demo_product_options',
'класс' => 'show_if_demo_product',
);
вернуть $ вкладки;
}


add_action('woocommerce_product_data_panels', 'demo_product_tab_product_tab_content');
функция demo_product_tab_product_tab_content() {
?><div class='panel woocommerce_options_panel'><?php
?><div class='options_group'><?php


woocommerce_wp_checkbox(массив(
'id' => '_enable_custom_product',
'label' => __('Включить пользовательский тип продукта'),
));


woocommerce_wp_text_input(
множество(
'id' => 'demo_product_info',
'label' => __('Информация о демонстрационном продукте', 'dm_product'),
'placeholder' => 'Вставьте сюда текст, который будет отображаться в интерфейсе',
'desc_tip' => 'истина',
'description' => __('Введите информацию о демонстрационном продукте.', 'dm_product'),
'тип' => 'текст'
)
);
?></дел>
</div><?php
}

add_action('woocommerce_process_product_meta', 'save_demo_product_settings');

функция save_demo_product_settings($post_id){

$enable_custom_product = isset($_POST['_enable_custom_product']) ? 'да нет';
update_post_meta($post_id, '_enable_custom_product', $enable_custom_product);
$demo_product_info = $_POST['demo_product_info'];

если( !пусто($demo_product_info ) ) {
update_post_meta($post_id, 'demo_product_info', esc_attr($demo_product_info));
}
}


add_action('woocommerce_single_product_summary', 'demo_product_front');

функция demo_product_front () {
глобальный $продукт;
если ('демо' == $product->get_type()) { 
echo(get_post_meta($product->get_id(), 'demo_product_info')[0]);
}
}

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

Это позволит пропустить шаг по созданию плагина WordPress, но обратите внимание, что ваши изменения исчезнут, если вы измените или обновите свою тему (если вы не используете дочернюю тему). Мы настоятельно рекомендуем использовать плагин для этого метода, но если вы предпочитаете чтобы использовать файл functions.php, вы можете это сделать.

Всегда не забывайте делать полную резервную копию вашего сайта WordPress, прежде чем вносить изменения в файл functions.php. Таким образом, если что-то пойдет не так, вы всегда сможете вернуться к рабочей версии.

Просто нажмите « Внешний вид» > «Редактор файлов темы» и нажмите « Функции темы» или «functions.php» на правой боковой панели «Файлы темы».

открытие редактора файла темы для использования файла функций

Затем вы можете просто вставить приведенные выше коды в редактор и нажать « Обновить файл» , чтобы закончить.

добавление кодов в файл функций темы

Заключение

На этом завершаются все шаги, необходимые для программного создания пользовательского типа продукта WooCommerce . Давайте кратко суммируем все шаги, необходимые для создания вашего пользовательского типа продукта:

  • Создайте и активируйте плагин для вашего пользовательского типа продукта WooCommerce.
  • Зарегистрируйте новый тип продукта.
  • Добавьте вкладку для вашего пользовательского типа продукта на странице отдельных продуктов.
  • Добавьте поля и настройки на вкладку вашего продукта.
  • Сохраните поля и настройки на вкладке вашего продукта.
  • Отобразите содержимое вкладки продукта в интерфейсе.

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

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

  • Как настроить массовые скидки WooCommerce
  • Как создать пользователя WordPress программно
  • Программное создание настраиваемого поля WordPress