Создание плагина для WooCommerce: добавление вкладки параметров в настройки API

Я создаю плагин для Worpdress / WooCommerce. Я сделал все, и теперь я хочу добавить вкладку опций в настройки API woocommerce, как в этом инструкция.

Это мой код:

add_filter( 'woocommerce_get_sections_api', 'some_function_to_add_tab' );

function some_function_to_add_tab( $sections ) {
$sections['some_settings'] = __( 'Some Settings', 'text-domain' );
return $sections;
}

add_filter( 'woocommerce_get_settings_api', 'some_tab_settings', 10, 2 );

function some_tab_settings( $settings, $current_section ) {
if ($current_section == 'some_settings') {
echo "settings here";
} else {
return $settings;
}
}

Но я получаю некоторые ошибки:

Предупреждение: отсутствует аргумент 2 для some_tab_settings () в C: \ OpenServer \ domains \ wp-dev \ wp-content \ plugins \ some-plugin \ some_plugin.php в строке 30

Примечание: неопределенная переменная: current_section в C: \ OpenServer \ domains \ wp-dev \ wp-content \ plugins \ some-plugin \ some_plugin.php в строке 31

Относится к:

add_filter (‘woocommerce_get_settings_api’, ‘some_tab_settings’, 10, 2); ==> Линия: 30

function some_tab_settings ($ settings, $ current_section) {==> Линия: 31

Как мне этого добиться?

4

Решение

Сначала посмотрим на исходный код ядра Настройки WC для WooCommerce API и к этот полезный только учебник (2016) Я нашел по этому вопросу. Вот код:

// creating a new sub tab in API settings
add_filter( 'woocommerce_get_sections_api','add_subtab' );
function add_subtab( $settings_tabs ) {
$settings_tabs['custom_settings'] = __( 'Custom Settings', 'woocommerce-custom-settings-tab' );
return $settings_tabs;
}// adding settings (HTML Form)
add_filter( 'woocommerce_get_settings_api', 'add_subtab_settings', 10, 2 );
function add_subtab_settings( $settings ) {
$current_section = (isset($_GET['section']) && !empty($_GET['section']))? $_GET['section']:'';
if ( $current_section == 'custom_settings' ) {
$custom_settings = array();
$custom_settings[] = array( 'name' => __( 'Custom Settings', 'text-domain' ),
'type' => 'title',
'desc' => __( 'The following options are used to ...', 'text-domain' ),
'id' => 'custom_settings'
);

$custom_settings[] = array(
'name'     => __( 'Field 1', 'text-domain' ),
'id'       => 'field_one',
'type'     => 'text',
'default'  => get_option('field_one'),

);

$custom_settings[] = array( 'type' => 'sectionend', 'id' => 'test-options' );
return $custom_settings;
} else {
// If not, return the standard settings
return $settings;
}
}

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

Благодаря Даниэль Халмаджан


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

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

Например, если ваши настройки array идентификатор 'custom_settings' вы будете использовать get_option( 'custom_settings' ), Для получения более подробной информации о добавлении настроек в WooCommerce, проверьте wooThemes: настройки API. Может быть, вы можете использовать echo var_dump(); Функция для просмотра выводимых данных:

$my_data = get_option( 'custom_settings' );
echo var_dump( $my_data );

Ссылка:

2

Другие решения

Пожалуйста, попробуйте это с крючком «woocommerce_get_settings_products». Вы не можете получить текущий раздел из этого хука (woocommerce_get_sections_api).

add_filter( 'woocommerce_get_settings_products', 'some_tab_settings', 10, 2 );

function some_tab_settings( $settings, $current_section ) {
if ($current_section == 'some_settings') {
echo "settings here";
} else {
return $settings;
}
}
0

По вопросам рекламы [email protected]