web-dev-qa-db-ja.com

の認証方法 REST プラグインとコマンドラインからのAPI

私は新しいREST AP​​Iを試したいのですが、このようなことには慣れていません。基本的に、私はAjaxを介してカスタム投稿を取得し、Webサイトのフロントエンドに表示するためにそれを使用したいです(私はAjax製品のフィルタリングシステムを構築しています)。

Phpから認証する方法とコマンドラインから認証をテストする方法がわかりません。

私はここでOAuthを必要としないと思います、公式のv2ドキュメントに関しては、ドキュメントは私が認証されたユーザからnonceシステム(ここでは問題ありません)を使うだろうと言います。明らかに、投稿を要求するWebサイトのスクリプトなので、私の場合は認証を行うユーザーはいません。そのため、どうすればphpまたはjs経由で認証できますか。

4
Luca Reghellin

投稿の一覧表示のように、GETリクエストは認証を必要としません少なくともプライベート投稿を取得する必要があります。あなたの問題はあなたが存在しないルート/エンドポイントを使用しているということです。

WordPress 4.4では、WP REST AP​​Iインフラストラクチャはマージされましたが、エンドポイントはマージされませんでした。それらはWordPress 4.5でマージされるでしょう(WordPress 4.6として、それはまだエンドポイントがコアに含まれていないようです)。 独自のエンドポイントを定義する必要があります またはそれが提供するデフォルトのエンドポイントを使用するためにプラグインをインストールする必要があります。

例えば(テストされていません。ここに書かれているだけです):

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;

}

その後、投稿を得ることができます。

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

WP-CLI package wp-cli/restful があり、それによって残りのエンドポイントがCLIに開かれます。

管理者として認証されているときにproductのようなカスタム投稿タイプを一覧表示するのは、同じくらい簡単です。

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