estoy usando el Complemento wpgraphql. En su mayor parte, está funcionando. Sin embargo, solo puedo consultar publicaciones cuyo estado es published
. Publicaciones con un estado de pending
o draft
no aparezcas
En otras palabras, aquí está mi consulta:
query MyQuery {
newsArticles {
nodes {
title
}
}
}
Si configuro el estado de mis artículos en pending
o draft
, entonces no aparece nada. Si los configuro published
entonces sí aparecen.
Tenga en cuenta que no hace ninguna diferencia si pruebo un tipo de publicación diferente (como posts
) o hacer la consulta utiliza edges
como esto:
query MyQuery {
newsArticles {
edges {
node {
title
}
}
}
}
Los resultados son los mismos.
Entonces, ¿alguna idea de cómo devolver resultados independientemente del estado?
Gracias.
WPGraphQL, por defecto, solo permite consultar publicaciones públicas porque así es como funciona WordPress, es decir, solo las publicaciones públicas son visibles para los usuarios.
Los primeros pasos son agregar algo de autenticación sobre nuestro graphql
consultas para que las publicaciones no públicas puedan ser consultadas.
-
Descarga esto – https://github.com/wp-graphql/wp-graphql-jwt-autenticación Complemento de WordPress ya sea clonando el repositorio en
plugins
directorio o cargando el archivo zip a través de WordPress. -
Después del paso anterior, debería poder ver el complemento en la sección de complementos. No active el complemento ahora.
-
Agregar
define('GRAPHQL_JWT_AUTH_SECRET_KEY', 'secret_token');
para ustedwp-config.php
archivo que está presente en el/var/www/html
carpeta. El complemento utiliza esta clave secreta para generar tokens para acceder a publicaciones no públicas. Asegúrese de que el token secreto sea una cadena larga aleatoria a la que solo debería poder acceder el servidor de WordPress. -
Active el complemento y consulte lo siguiente
mutation LoginUser {
login( input: {
clientMutationId: "uniqueId",
username: "your_login",
password: "your password"
} ) {
authToken
user {
id
name
}
}
}
Recibirá un token que puede usar desde su código para consultar publicaciones no públicas.
Una vez que se realizan los pasos anteriores, lo único que queda es cómo usar el token y obtener las publicaciones no públicas en su código.
- Agregar
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
en tus.htaccess
archivo, que está presente en el/var/www/html
directorio. Si no ha actualizado su.htaccess
archivo antes, debería verse como a continuación después de actualizarlo. Esto permite que elAuthorization
encabezado en la solicitud entrante en el servidor de WordPress. Usaremos elAuthorization
encabezado para enviar el token autenticado.
# 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
- Una vez realizado el paso anterior, podrá enviar un
Authorization
encabezado y obtener publicaciones no públicas
Authorization: Bearer ${your_token}
Reemplazar ${your_token}
con su token real, y ahora podrá consultar publicaciones no públicas.
github.com/wp-graphql/wp-graphql/issues/… ?
– xadm
23 de febrero de 2020 a las 23:37
Gracias, de verdad.
– Moshé
24 de febrero de 2020 a las 10:41