Anzeigen von Entwürfen und ausstehenden Beiträgen mit WpGraphQL

Lesezeit: 2 Minuten

Ich benutze die wpgraphql-Plugin. Zum größten Teil funktioniert es. Allerdings kann ich nur Beiträge abfragen, deren Status ist published. Beiträge mit einem Status von pending oder draft nicht auftauchen.

Mit anderen Worten, hier ist meine Anfrage:

query MyQuery {
  newsArticles {
    nodes {
      title
    }
  }
}

Wenn ich den Status meiner Artikel auf setze pending oder draft, dann wird nichts angezeigt. Wenn ich sie einstelle published dann tauchen sie auf.

Beachten Sie, dass es keinen Unterschied macht, ob ich einen anderen Beitragstyp ausprobiere (wie z posts) oder die Abfrage verwendet edgesso was:

query MyQuery {
  newsArticles {
    edges {
      node {
        title
      }
    }
  }
}

Die Ergebnisse sind die gleichen.

Haben Sie also eine Idee, wie Sie Ergebnisse unabhängig vom Status zurückgeben können?

Vielen Dank.

WPGraphQL erlaubt standardmäßig nur die Abfrage öffentlicher Beiträge, da WordPress so funktioniert, dh nur öffentliche Beiträge sind für Benutzer sichtbar.

Die ersten Schritte bestehen darin, eine Authentifizierung über unsere hinzuzufügen graphql Abfragen, damit nicht-öffentliche Beiträge abgefragt werden können.

  1. Laden Sie diese herunter – https://github.com/wp-graphql/wp-graphql-jwt-authentication WordPress-Plugin entweder durch Klonen des Repos in plugins Verzeichnis oder Hochladen der ZIP-Datei über WordPress.

  2. Nach dem obigen Schritt sollten Sie das Plugin in Ihrem Plugin-Bereich sehen können. Aktivieren Sie das Plugin jetzt nicht.

  3. Hinzufügen define('GRAPHQL_JWT_AUTH_SECRET_KEY', 'secret_token'); zu deinem wp-config.php Datei, die in der vorhanden ist /var/www/html Mappe. Dieser geheime Schlüssel wird vom Plugin verwendet, um Token für den Zugriff auf nicht-öffentliche Posts zu generieren. Stellen Sie sicher, dass das geheime Token eine zufällige lange Zeichenfolge ist, die nur für den WordPress-Server zugänglich sein sollte.

  4. Aktivieren Sie das Plugin und fragen Sie Folgendes ab

mutation LoginUser {
  login( input: {
    clientMutationId: "uniqueId",
    username: "your_login",
    password: "your password"
  } ) {
    authToken
    user {
      id
      name
    }
  }
}

Sie erhalten einen Token, den Sie aus Ihrem Code verwenden können, um nicht-öffentliche Beiträge abzufragen.

Sobald die obigen Schritte abgeschlossen sind, bleibt nur noch, wie Sie das Token verwenden und die nicht-öffentlichen Beiträge in Ihrem Code erhalten.

  1. Hinzufügen SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 in deiner .htaccess Datei, die in der vorhanden ist /var/www/html Verzeichnis. Wenn Sie Ihre nicht aktualisiert haben .htaccess Datei vor, sollte es nach der Aktualisierung wie unten aussehen. Dies ermöglicht die Authorization Header auf der eingehenden Anfrage auf dem WordPress-Server. Wir werden die verwenden Authorization Header, um das authentifizierte Token zu senden.
# 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. Sobald der obige Schritt abgeschlossen ist, können Sie eine senden Authorization Header und erhalten Sie nicht-öffentliche Beiträge
Authorization: Bearer ${your_token}

Ersetzen ${your_token} mit Ihrem eigentlichen Token, und Sie können nun nicht-öffentliche Beiträge abfragen.

1426930cookie-checkAnzeigen von Entwürfen und ausstehenden Beiträgen mit WpGraphQL

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy