Как создать настройку для внешнего API в WordPress

Интеграция внешних API с WordPress — частая задача при разработке сайтов, которые требуют обмена данными с внешними сервисами. Чтобы сделать такую интеграцию удобной, важно не просто писать код вызова API, но и создать для него удобную настройку в админке WordPress. В этой статье подробно разберём, как создать в админке WordPress собственную страницу настроек для внешнего API с сохранением ключа, URL и других параметров. А также рассмотрим, как использовать эти настройки для реальных запросов к API.

Почему важно создавать отдельную страницу настроек для API

Часто при интеграции с внешними сервисами нужно хранить ключи доступа, URL, параметры и другие данные. Если эти параметры хардкодить в коде, то при смене ключа или адреса API придётся менять код и обновлять сайт. Это неудобно и небезопасно.

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

  • Удобно и быстро менять параметры API без правки кода.
  • Сохранять данные в базе WordPress, используя стандарты настроек.
  • Делать настройки доступными только администраторам.
  • Использовать WordPress API для валидации и безопасности.

Дальше разберём, как это сделать на практике.

Создание страницы настроек для внешнего API в WordPress

Регистрация страницы настроек в меню админки

Для начала добавим в меню админки свою страницу настроек. Для этого используем хук admin_menu и функцию add_options_page.

function wpexamples_add_api_settings_page() {
    add_options_page(
        'Настройки внешнего API',
        'Внешний API',
        'manage_options',
        'wpexamples-api-settings',
        'wpexamples_render_api_settings_page'
    );
}
add_action('admin_menu', 'wpexamples_add_api_settings_page');

Здесь мы создаём пункт меню «Внешний API» в разделе «Настройки».

Рендеринг страницы с формой настройки

Следующий шаг — вывести форму с полями для ключа API, URL и другими параметрами. Используем стандартный API настроек WordPress.

function wpexamples_render_api_settings_page() {
    if (!current_user_can('manage_options')) {
        return;
    }
    ?>
    <div class="wrap">
        <h1>Настройки внешнего API</h1>
        <form action="options.php" method="post">
            <?php
            settings_fields('wpexamples_api_options_group');
            do_settings_sections('wpexamples-api-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Функции settings_fields и do_settings_sections работают с группой настроек и секциями, которые мы зарегистрируем далее.

Регистрация настроек и полей

Для хранения настроек используем функцию register_setting. Для добавления полей — add_settings_section и add_settings_field.

function wpexamples_register_api_settings() {
    register_setting('wpexamples_api_options_group', 'wpexamples_api_options', 'wpexamples_sanitize_api_options');

    add_settings_section(
        'wpexamples_api_main_section',
        'Основные параметры API',
        'wpexamples_api_section_callback',
        'wpexamples-api-settings'
    );

    add_settings_field(
        'api_url',
        'URL API',
        'wpexamples_api_url_render',
        'wpexamples-api-settings',
        'wpexamples_api_main_section'
    );

    add_settings_field(
        'api_key',
        'Ключ API',
        'wpexamples_api_key_render',
        'wpexamples-api-settings',
        'wpexamples_api_main_section'
    );
}
add_action('admin_init', 'wpexamples_register_api_settings');

Вывод полей ввода

Теперь реализуем функции, которые выведут поля ввода для URL и ключа.

function wpexamples_api_url_render() {
    $options = get_option('wpexamples_api_options');
    ?>
    <input type="url" name="wpexamples_api_options[api_url]" value="<?php echo esc_attr($options['api_url'] ?? ''); ?>" size="50">
    <?php
}

function wpexamples_api_key_render() {
    $options = get_option('wpexamples_api_options');
    ?>
    <input type="text" name="wpexamples_api_options[api_key]" value="<?php echo esc_attr($options['api_key'] ?? ''); ?>" size="50">
    <?php
}

Валидация и очистка данных

Перед сохранением важно проверить и очистить введённые данные для безопасности.

function wpexamples_sanitize_api_options($input) {
    $new_input = [];
    if (isset($input['api_url'])) {
        $new_input['api_url'] = esc_url_raw($input['api_url']);
    }
    if (isset($input['api_key'])) {
        $new_input['api_key'] = sanitize_text_field($input['api_key']);
    }
    return $new_input;
}

Описание секции настроек

Функция для вывода описания секции.

function wpexamples_api_section_callback() {
    echo '<p>Введите параметры для подключения к внешнему API.</p>';
}

Пример использования сохранённых настроек для вызова API

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

function wpexamples_call_external_api($endpoint) {
    $options = get_option('wpexamples_api_options');
    if (empty($options['api_url']) || empty($options['api_key'])) {
        return new WP_Error('api_settings_missing', 'Настройки API не заданы');
    }

    $url = trailingslashit($options['api_url']) . ltrim($endpoint, '/');

    $response = wp_remote_get($url, [
        'headers' => [
            'Authorization' => 'Bearer ' . $options['api_key'],
            'Accept'        => 'application/json',
        ],
        'timeout' => 15,
    ]);

    if (is_wp_error($response)) {
        return $response;
    }

    $code = wp_remote_retrieve_response_code($response);
    $body = wp_remote_retrieve_body($response);

    if ($code !== 200) {
        return new WP_Error('api_error', 'Ошибка API: код ' . $code, ['body' => $body]);
    }

    $data = json_decode($body, true);
    if (json_last_error() !== JSON_ERROR_NONE) {
        return new WP_Error('json_error', 'Ошибка разбора JSON');
    }

    return $data;
}

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

Рекомендации по безопасности и удобству

При работе с ключами API важно соблюдать несколько правил:

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

Также рекомендуем использовать плагины для оптимизации и безопасности, например, Clearfy Pro для очистки и защиты сайта.

Подытожим

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как отключить AJAX в WooCommerce при массовом обновлении заказов
18.05.2026
WordPress REST API: отладка и просмотр запросов с примерами
01.01.2026
Lazy Load для видео в WordPress: как ускорить загрузку страниц и улучшить производительность
10.03.2026
Как создать функцию автоподсказки в WordPress с примерами кода
16.01.2026
Автопостинг в WordPress: как автоматизировать публикации
18.11.2025
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше