Отображение черновиков и ожидающих сообщений с помощью WpGraphQL
Я использую плагин wpgraphql. По большей части он работает. Однако я могу запрашивать только сообщения со статусомpublished
. Посты со статусомpending
или draft
не появляйся.
Другими словами, вот мой вопрос:
query MyQuery {
newsArticles {
nodes {
title
}
}
}
Если я установлю статус своих статей на pending
или draft
, то ничего не появляется. Если я установлю их наpublished
тогда они действительно появляются.
Обратите внимание: это не имеет значения, если я попробую другой тип сообщения (например, posts
) или запрос использует edges
, как это:
query MyQuery {
newsArticles {
edges {
node {
title
}
}
}
}
Результаты такие же.
Итак, есть идеи, как вернуть результаты независимо от статуса?
Спасибо.
0 ответов
WPGraphQL по умолчанию позволяет запрашивать только общедоступные сообщения, потому что именно так работает WordPress, т. Е. Пользователям видны только общедоступные сообщения.
Первые несколько шагов - добавить аутентификацию поверх нашего
graphql
запросы, чтобы можно было делать запросы к закрытым сообщениям.
Загрузите это - https://github.com/wp-graphql/wp-graphql-jwt-authentication плагин WordPress либо путем клонирования репо в
plugins
каталог или загрузив zip-файл через WordPress.После вышеуказанного шага вы должны увидеть плагин в разделе плагинов. Не активируйте плагин сейчас.
Добавить
define('GRAPHQL_JWT_AUTH_SECRET_KEY', 'secret_token');
на вашwp-config.php
файл, который присутствует в/var/www/html
папка. Этот секретный ключ используется плагином для генерации токенов для доступа к закрытым сообщениям. Убедитесь, что секретный токен представляет собой произвольную длинную строку, которая должна быть доступна только для сервера WordPress.Активируйте плагин и запросите следующее
mutation LoginUser {
login( input: {
clientMutationId: "uniqueId",
username: "your_login",
password: "your password"
} ) {
authToken
user {
id
name
}
}
}
Вы получите токен, который вы можете использовать из своего кода для запроса непубличных сообщений.
После того, как описанные выше шаги будут выполнены, остается единственное, как использовать токен и получать закрытые сообщения в вашем коде.
- Добавить
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
в вашем.htaccess
файл, который присутствует в/var/www/html
каталог. Если вы не обновили.htaccess
раньше, после обновления он должен выглядеть, как показано ниже. Это позволяетAuthorization
заголовок входящего запроса на сервере WordPress. Мы будем использоватьAuthorization
заголовок для отправки аутентифицированного токена.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
- Как только вышеуказанный шаг будет выполнен, вы сможете отправить
Authorization
заголовок и получать непубличные сообщения
Authorization: Bearer ${your_token}
Заменить
${your_token}
с вашим фактическим токеном, и теперь вы сможете запрашивать непубличные сообщения.