Что такое WPGraphQL и почему он полезен для автоматизации WordPress
WPGraphQL — это бесплатный плагин для WordPress, который добавляет полноценный GraphQL API к вашему сайту. GraphQL — современный язык запросов к API, позволяющий точно указывать, какие данные нужны, и получать их в одном запросе. Это особенно актуально для сложных сайтов и приложений, где REST API может быть менее эффективен.
Использование WPGraphQL открывает новые возможности по автоматизации: можно быстро получать, обновлять или удалять данные без необходимости загружать весь бэкенд WordPress, а также интегрировать сайт с внешними сервисами, системами аналитики, CRM и другими инструментами.
В этой статье мы подробно разберём, как начать работать с WPGraphQL, создавать запросы и мутации, и как автоматизировать рутинные задачи WordPress с помощью этого инструмента.
Установка и базовая настройка WPGraphQL
Для начала необходимо установить плагин WPGraphQL с официального репозитория WordPress:
- В админке WordPress перейдите в раздел Плагины > Добавить новый.
- В строке поиска введите
WPGraphQLи установите плагин от WPGraphQL. - Активируйте плагин.
После активации доступ к GraphQL API будет открыт по адресу https://ваш-сайт.ru/graphql. Для проверки можно использовать GraphiQL — встроенный интерактивный редактор запросов, доступный по адресу https://ваш-сайт.ru/graphql/graphiql.
WPGraphQL автоматически генерирует схему данных на основе типов записей, таксономий, метаданных и других сущностей WordPress. Это позволяет сразу начинать писать запросы и мутации для чтения и изменения данных.
Примеры запросов и мутаций для автоматизации задач в WordPress
Получение списка публикаций с определённой категорией
Одной из типичных задач автоматизации является получение контента для внешних сервисов или генерация отчётов. Рассмотрим пример запроса, который получает 5 последних постов из категории с ID 12.
query wpmyGetPostsByCategory {
posts(where: {categoryId: 12}, first: 5) {
nodes {
id
title
date
author {
node {
name
}
}
}
}
}В ответе вы получите структуру с ID, заголовком, датой и именем автора. Такой запрос можно использовать в сторонних скриптах для автоматического обновления контента.
Создание новой записи через мутацию
Для автоматического добавления новых записей или постов можно использовать мутации GraphQL. Вот пример мутации для создания записи с названием и содержимым:
mutation wpmyCreatePost {
createPost(input: {title: "Автоматически созданный пост", content: "Содержимое поста", status: PUBLISH}) {
post {
id
title
date
}
}
}Этот запрос создаёт опубликованный пост. Можно дополнительно указывать категории, теги, кастомные поля и другие параметры.
Обновление метаданных записи
Для управления дополнительными данными записи используется мета-поле. WPGraphQL позволяет менять метаданные с помощью мутаций.
mutation wpmyUpdatePostMeta {
updatePostMeta(input: {postId: 123, metaKey: "wpmy_custom_field", metaValue: "Новое значение"}) {
meta {
key
value
}
}
}Здесь postId — ID поста, metaKey — имя поля, metaValue — новое значение. Это удобно, если вы автоматизируете добавление или изменение дополнительных данных.
Автоматизация с помощью WPGraphQL и PHP: пример интеграции
Для запуска GraphQL-запросов из PHP-скриптов, например, для cron-задач или внешних интеграций, можно использовать стандартные HTTP-запросы.
Пример функции, отправляющей запрос к GraphQL API и возвращающей результат:
function wpmy_send_graphql_query($query, $variables = []) {
$url = get_site_url(null, '/graphql');
$args = [
'body' => json_encode(['query' => $query, 'variables' => $variables]),
'headers' => [
'Content-Type' => 'application/json',
],
];
$response = wp_remote_post($url, $args);
if (is_wp_error($response)) {
return null;
}
$body = wp_remote_retrieve_body($response);
return json_decode($body, true);
}Использование функции для получения списка последних постов:
$query = 'query { posts(first: 3) { nodes { id title } } }';
$result = wpmy_send_graphql_query($query);
if ($result && empty($result['errors'])) {
foreach ($result['data']['posts']['nodes'] as $post) {
echo "ID: {$post['id']}, Заголовок: {$post['title']}\n";
}
}Такой подход позволяет интегрировать WPGraphQL в любые задачи и скрипты, автоматизируя работу с WordPress на новом уровне.
Расширение WPGraphQL: добавление собственных типов и полей для автоматизации
Иногда стандартной схемы WPGraphQL недостаточно, и нужно добавить свои поля, чтобы полноценно автоматизировать задачи.
Для этого в functions.php темы или в собственном плагине можно использовать хуки WPGraphQL. Например, добавим поле wpmy_custom_field к типу записи post:
add_action('graphql_register_types', function() {
register_graphql_field('Post', 'wpmy_custom_field', [
'type' => 'String',
'description' => 'Кастомное поле для автоматизации',
'resolve' => function($post) {
return get_post_meta($post->ID, 'wpmy_custom_field', true);
}
]);
});Теперь это поле будет доступно в запросах GraphQL и мутациях, что значительно расширяет возможности автоматизации.
Практические советы и лучшие практики для работы с WPGraphQL
- Оптимизируйте запросы: запрашивайте только необходимые поля, чтобы снизить нагрузку на сервер.
- Используйте кеширование: GraphQL-запросы можно кешировать для ускорения ответа и снижения нагрузки.
- Безопасность: ограничивайте доступ к GraphQL API, например, используя аутентификацию или плагины, которые позволяют контролировать права.
- Тестируйте мутации: ошибки при изменении данных могут привести к потере информации, поэтому тщательно проверяйте мутации в тестовом окружении.
WPGraphQL — мощный инструмент для разработчиков, который позволяет автоматизировать множество задач WordPress, интегрировать сайт с внешними сервисами и создавать современные интерфейсы.
Для тех, кто хочет расширить функциональность, рекомендуем обратить внимание на плагин Clearfy Pro, который совместим с WPGraphQL и помогает оптимизировать работу сайта. Подробнее о нём на wpshop.ru.