默认情况下,WPGraphQL 只允许查询公共帖子,因为这就是 WordPress 的工作方式,即只有公共帖子对用户可见。
前几个步骤是对我们的graphql
查询添加一些身份验证,以便可以查询非公开帖子。
下载这个 - https://github.com/wp-graphql/wp-graphql-jwt-authentication WordPress 插件,方法是克隆plugins
目录中的 repo 或通过 WordPress 上传 zip 文件。
完成上述步骤后,您应该能够在您的插件部分看到该插件。现在不要激活插件。
添加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}
为您的实际令牌,您现在将能够查询非公开帖子。