Как добавить поддержку GraphQL в WordPress плагин

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

Почему стоит использовать GraphQL в WordPress плагинах

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

Кроме того, GraphQL упрощает построение сложных запросов с вложенными данными, что особенно полезно для современных фронтенд-приложений на React, Vue или Angular.

Подготовка окружения и установка необходимых пакетов

Для начала нам понадобится установить и активировать плагин WPGraphQL. Это базовый плагин, который добавляет поддержку GraphQL в WordPress.

Его можно установить через админку WordPress или скачать с официального репозитория. После активации вы получите доступ к GraphQL эндпоинту /graphql.

Установка WPGraphQL через админку

  • Перейдите в раздел Плагины > Добавить новый
  • Введите в поиске "WPGraphQL"
  • Установите и активируйте плагин

Создаем собственные типы и поля GraphQL в плагине

Для того, чтобы расширить схему GraphQL своими типами, нам нужно зарегистрировать кастомные типы и поля. Рассмотрим пример, как добавить тип "Book" с полями title, author и year.

add_action('graphql_register_types', 'wpplugin_register_book_type');
function wpplugin_register_book_type() {
    register_graphql_object_type('Book', [
        'description' => 'Книга с основными данными',
        'fields' => [
            'title' => [
                'type' => 'String',
                'description' => 'Название книги',
            ],
            'author' => [
                'type' => 'String',
                'description' => 'Автор книги',
            ],
            'year' => [
                'type' => 'Int',
                'description' => 'Год издания',
            ],
        ],
    ]);
}

Этот код добавляет новый тип Book в GraphQL схему. Далее создадим запрос, который возвращает список книг.

add_action('graphql_register_types', 'wpplugin_register_books_query');
function wpplugin_register_books_query() {
    register_graphql_field('RootQuery', 'books', [
        'type' => ['list_of' => 'Book'],
        'description' => 'Список книг',
        'resolve' => function() {
            // Здесь можно получить данные из базы, API или файла
            return [
                ['title' => 'Война и мир', 'author' => 'Лев Толстой', 'year' => 1869],
                ['title' => 'Преступление и наказание', 'author' => 'Фёдор Достоевский', 'year' => 1866],
            ];
        },
    ]);
}

Интеграция с кастомными типами постов и метаполями

Если у вас есть кастомный тип поста, например "product", и вы хотите добавить его поддержку в GraphQL с метаполями, это тоже возможно.

Для этого можно использовать параметр show_in_graphql при регистрации типа поста:

register_post_type('product', [
    'label' => 'Продукты',
    'public' => true,
    'show_in_graphql' => true,
    'graphql_single_name' => 'Product',
    'graphql_plural_name' => 'Products',
]);

Для метаполей используйте функцию register_graphql_field:

add_action('graphql_register_types', function() {
    register_graphql_field('Product', 'price', [
        'type' => 'Float',
        'description' => 'Цена продукта',
        'resolve' => function($product) {
            return get_post_meta($product->ID, 'price', true);
        },
    ]);
});

Тестирование и отладка GraphQL запросов

После добавления типов и полей вы сможете отправлять запросы к эндпоинту /graphql. Для удобства используйте GraphiQL — встроенный в WPGraphQL инструмент для тестирования запросов.

Пример запроса для получения списка книг:

{
  books {
    title
    author
    year
  }
}

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

Использование WPGraphQL с плагинами WPShop

Если вы используете продукты WPSHOP, например, плагин WPGPT, можно расширить GraphQL запросы для интеграции с их функционалом, например, получать данные из GPT или создавать пользовательские запросы.

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

Заключение

Добавление поддержки GraphQL в ваш WordPress плагин открывает новые возможности для создания современных, быстрых и удобных API. Используя WPGraphQL и собственные расширения, вы сможете создавать кастомные схемы и резолверы для любых задач.

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

Оптимизация загрузки изображений в WordPress с помощью WP Rocket
12.01.2026
Как добавить поддержку многоязычности в своем WordPress плагине
13.12.2025
Как создать автозапускаемые крон-задачи в WordPress
12.03.2026
Как добавить AJAX в WordPress плагин: подробное руководство
20.11.2025
Как избежать конфликтов между плагинами WordPress: практические решения
02.03.2026