WP-CITY.RU

Авторские шаблоны WordPress

Недорогой, функциональный сайт или Интернет-магазин
это реально!


Заказать интернет-магазин сейчас

Добавление вкладки в настройки WooCommerce

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

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

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

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

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

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

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

8de78765c5

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

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

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

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) перед добавлением в наши новые настройки.

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

eff2577b80

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

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

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

get_option( 'wcslider_auto_insert' )

Заключение

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

© 2012–2017 / wp-city.ru / Авторские шаблоны WORDPRESS / Создание сайтов

evgeniy38868     krizisvt@i.ua