web-dev-qa-db-de.com

wie man sich für das authentifiziert REST API von einem Plugin und von der Kommandozeile

Ich möchte die neue REST -API ausprobieren, bin aber nicht an diese Art von Dingen gewöhnt. Grundsätzlich möchte ich es verwenden, um benutzerdefinierte Posts über Ajax abzurufen und auf dem Website-Frontend anzuzeigen (ich baue ein Ajax-Produktfiltersystem auf).

Ich kann nicht herausfinden, wie man sich über PHP authentifiziert und wie man die Authentifizierung über die Befehlszeile testet.

Ich denke, ich brauche hier kein OAuth, wie bei den offiziellen v2-Dokumenten, aber die Dokumente sagen, dass ich ein Nonce-System (hier kein Problem) von einem authentifizierten Benutzer verwenden würde. Da es sich um ein Website-Skript handelt, das nach Beiträgen fragt, gibt es in meinem Fall keinen menschlichen Benutzer, der sich authentifiziert. Wie kann ich das also über PHP oder JS und auf eine anständig sichere Weise tun?

4
Luca Reghellin

GET-Anfragen, wie das Auflisten von Posts, erfordern keine Authentifizierung, zumindest, um private Posts zu erhalten. Ihr Problem ist, dass Sie eine Route/einen Endpunkt verwenden, die/der nicht existiert.

In WordPress 4.4 wurde die API-Infrastruktur von WP REST zusammengeführt, Endpunkte jedoch nicht. Sie werden in WordPress 4.5 zusammengeführt (wie es scheint, sind Endpunkte in WordPress 4.6 noch nicht im Core enthalten). Sie müssen Ihre eigenen Endpunkte definieren oder das Plugin installieren, um die von ihm bereitgestellten Standardendpunkte zu verwenden.

Zum Beispiel (nicht getestet, nur hier geschrieben):

add_action( 'rest_api_init', 'cyb_register_api_endpoints' );
function cyb_register_api_endpoints() {

    $namespace = 'myplugin/v1';

    register_rest_route( $namespace, '/posts/', array(
        'methods' => 'GET',
        'callback' => 'cyb_get_posts',
    ) );

}

function cyb_get_posts() {

    $args = array(
         // WP_Query arguments
    );

    $posts = new WP_Query( $args );

    $response = new WP_REST_Response( $posts );

    return $response;

}

Dann können Sie die Beiträge erhalten:

https://example.com/myplugin/v1/posts/
6
cybmeta

Es gibt eine WP-CLI package wp-cli/restful , die dem CLI Ruheendpunkte öffnet.

Das Auflisten des benutzerdefinierten Beitragstyps wie product bei der Authentifizierung als Administrator ist so einfach wie:

wp post list --post-type=product --user=admin
0
jgraup