Главная Новости

Новая вкладка в настройки WooCommerce без плагина


Опубликовано: 24.08.2018

видео Новая вкладка в настройки WooCommerce без плагина

Настройка заголовков у карточек товаров

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



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

В каком случае необходимо создавать вкладку

Предположим, у нас есть расширение, которое добавляет слайдер на единичную страницу продукта. У такого расширения не так уж много опций, всего несколько:


Настройка Contact Form 7. Полное описание настроек для форм, а так же фишки и дополнения

Автоматическая вставка на единичную страницу продукта (checkbox) Заголовок слайдера (текстовое поле)

Здесь только две опции, которые относятся к Продуктам . Мы легко могли бы добавить их к настройкам продуктов WooCommerce ( WooCommerce > Настройки > Продукты ), но это будет не совсем удобным для пользователя. Пользователи изначально не знают, куда смотреть и им придется просмотреть все опции продуктов. В этом случае было бы сложно или даже невозможно связать параметры напрямую.

К счастью, в WooCommerce 2.2.2 есть новый фильтр, позволяющий нам добавлять новую секцию, под одной из основных вкладок настроек.

Как добавить секцию?

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

В первую очередь вам необходимо добавить секцию. Это можно сделать путем подключения к фильтру

woocommerce_get_sections_products:

<?php /** * Создание раздела во вкладке продукты **/ add_filter( 'woocommerce_get_sections_products', 'wcslider_add_section' ); function wcslider_add_section( $sections ) { $sections['wcslider'] = __( 'WC Slider', 'text-domain' ); return $sections; }

Важным моментом, касающимся фильтра woocommerce_get_sections_products , является то, что последняя его часть products это вкладка, к которой вы хотите добавить секцию. Поэтому если вы хотите добавить новую вкладку к секции аккаунтов, вы должны подключиться к фильтру woocommerce_get_sections_accounts .

Как добавить настройки параметров во вкладку?

Теперь, когда у вас есть вкладка, вам нужно фильтровать вывод woocommerce_get_sections_products (или похожих фильтров). Вам следует добавить настройки с помощью WooCommerce API Настроек , но сперва проверив текущую секцию, прежде чем добавлять настройки в массив вкладки.

Например, давайте добавим образцы настроек wcslider:

<?php /** * Добавление параметров в раздел, который мы создали ранее */ add_filter( 'woocommerce_get_settings_products', 'wcslider_all_settings', 10, 2 ); function wcslider_all_settings( $settings, $current_section ) { /** * Проверим, то, что раздел является тем, который нам нужен **/ if ( $current_section == 'wcslider' ) { $settings_slider = array(); // Добавление заголовка секции $settings_slider[] = array( 'name' => __( 'WC Slider Настройки', 'text-domain' ), 'type' => 'title', 'desc' => __( 'Следующие опции используются для настройки WC Slider', 'text-domain' ), 'id' => 'wcslider' ); // Добавление чекбокса $settings_slider[] = array( 'name' => __( 'Автоматически добавлять на страницу единичного продукта', 'text-domain' ), 'desc_tip' => __( 'Если будет выбрана эта опция, слайдер автоматически добавится на страницу единичного продукта', 'text-domain' ), 'id' => 'wcslider_auto_insert', 'type' => 'checkbox', 'css' => 'min-width:300px;', 'desc' => __( 'Включить автоматическую вставку', 'text-domain' ), ); // Добавление текстового поля $settings_slider[] = array( 'name' => __( 'Заголовок слайдера', 'text-domain' ), 'desc_tip' => __( 'Введите заголовок который будет добавлен ко всем вашим слайдерам', 'text-domain' ), 'id' => 'wcslider_title', 'type' => 'text', 'desc' => __( 'С помощю этого поля вы можете добавить любой заголовок к вашему слайдеру!', 'text-domain' ), ); $settings_slider[] = array( 'type' => 'sectionend', 'id' => 'wcslider' ); return $settings_slider; /** * Если раздел не наш, вернуть стандартные настройки **/ } else { return $settings; } }

Мы подключаемся к фильтру woocommerce_get_sections_products, но на этот раз проверяя, чтобы $current_section совпадал с ранее определенной секцией (wcslider) перед добавлением в наши новые настройки.

В конечном итоге это будет выглядеть следующим образом:

Использование новых настроек

Новые параметры настроек нужно использовать так же, как если бы вы использовали любые другие настройки WordPress / WooCommerce , а именно с помощью функции get_option и определенного идентификатора настройки.

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

get_option( 'wcslider_auto_insert' )

Заключение

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

rss