Mostrando borradores y publicaciones pendientes con WpGraphQL

3 minutos de lectura

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 edgescomo 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.

  1. 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.

  2. Después del paso anterior, debería poder ver el complemento en la sección de complementos. No active el complemento ahora.

  3. Agregar define('GRAPHQL_JWT_AUTH_SECRET_KEY', 'secret_token'); para usted wp-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.

  4. 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.

  1. 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 el Authorization encabezado en la solicitud entrante en el servidor de WordPress. Usaremos el Authorization 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
  1. 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.

¿Ha sido útil esta solución?