Mos*_*she 4 wordpress graphql wp-graphql
我正在使用wpgraphql 插件。在大多数情况下,它正在发挥作用。但是,我只能查询状态为 的帖子published
。状态为pending
或 的帖子draft
不会显示。
换句话说,这是我的查询:
query MyQuery {
newsArticles {
nodes {
title
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将文章的状态设置为pending
或draft
,则不会显示任何内容。如果我将它们设置为published
那么它们就会出现。
posts
请注意,如果我尝试不同的帖子类型(例如)或执行查询使用,则没有任何区别edges
,如下所示:
query MyQuery {
newsArticles {
edges {
node {
title
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是一样的。
那么,知道如何无论状态如何都返回结果吗?
谢谢。
小智 6
默认情况下,WPGraphQL 只允许查询公共帖子,因为这就是 WordPress 的工作原理,即只有公共帖子对用户可见。
前几个步骤是在我们的graphql
查询中添加一些身份验证,以便可以查询非公开帖子。
通过在目录中克隆存储库或通过 WordPress 上传 zip 文件来下载此https://github.com/wp-graphql/wp-graphql-jwt-authentication WordPress 插件。plugins
完成上述步骤后,您应该能够在插件部分看到该插件。现在不要激活该插件。
添加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
}
}
}
Run Code Online (Sandbox Code Playgroud)
您将收到一个令牌,您可以使用您的代码来查询非公开帖子。
完成上述步骤后,唯一剩下的就是如何使用令牌并在代码中获取非公开帖子。
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
文件。如果您之前没有更新过文件,则更新后的文件应如下所示。这将启用WordPress 服务器上传入请求的标头。我们将使用标头发送经过身份验证的令牌。.htaccess
/var/www/html
.htaccess
Authorization
Authorization
mutation LoginUser {
login( input: {
clientMutationId: "uniqueId",
username: "your_login",
password: "your password"
} ) {
authToken
user {
id
name
}
}
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
替换${your_token}
为您的实际令牌,您现在将能够查询非公开帖子。
归档时间: |
|
查看次数: |
1885 次 |
最近记录: |