プレーンパーマリンクフォーマットでREST-APIを使用できますか?


9

最近、すべてのREST-APIリクエストが突然404エラーを返すようになりました。すべてのリクエスト(カスタムエンドポイントや組み込みに関係なく)。

次に、それはパーマリンクの構造によるものだと考えました。/wp-json/現時点ではリダイレクトルールが存在しないため、プレーンパーマリンクではアクセスできません。

この状況でRESTエンドポイントを使用することは可能ですか?カスタムと組み込みの両方。

回答:


16

はい、できます。rest_routeクエリパラメータを追加するだけです。

そう

https://wordpress.org/wp-json/

なるだろう

https://wordpress.org/?rest_route=/

または、より完全な例を示すhttps://wordpress.org/wp-json/wp/v2/ようhttps://wordpress.org/?rest_route=/wp/v2になります。

それで、どれを使用するかをどのように決定するのか疑問に思っていますか?心配する必要はありません。そのための関数があります。get_rest_url()

別のオプションは、デフォルトで<link>APIルートを提供するヘッダーにがあるという事実です。

<link rel='https://api.w.org/' href='https://wordpress.org/wp-json/' />

だからあなたがクライアントサイドJSからそれを理解する必要がある場合は、

document.querySelectorAll('link[rel="https://api.w.org/"]')[0].getAttribute('href');

したがって、基本的にはwp-json、指定された部分(およびハードコード)を採用するのではなく、get_rest_url()上記のJSアプローチを使用するか、常に動的にビルドする必要があります。


それで、私がそれを平易に使用したいのであれば、それは次のようなものhttps://wordpress.org/?rest_route=SOMEPATH&value1=X&value2=Yでしょうか?つまり、パーマリンク構造を検出し、それに基づいてRESTルートを変更するための条件が必要ですか?
ジャックヨハンソン

まあ条件付きではないかもしれませんが、動的に構築する必要があります。上記の編集を参照してください。
クラフトナー2017

jsonpでこのルートをどのように使用しますか?試しました/?rest_route=/?_jsonp=callBackfnが404ステータスになりました。
レッドシフト

@redshift通常、このようなことについては別の質問を開いてください。あなたのケースでは、クエリ文字列区切り文字en.wikipedia.org/wiki/Query_string#Structureを読む必要があります。次のように記述する必要があります/?rest_route=/&_jsonp=callBackfn
kraftner

1

あなたはあなたのウェブサーバーに1つの書き換えを追加することができます。

例:nginx

location ~ ^/wp-json/ {
    rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}

0

rest_routeクエリパラメータは、Ugly固定リンクのスタイル(言葉ではない私のワードプレスの選択)。Post name以下のスクリーンショットに示すように、permilinkスタイルをに変更できwp-jsonます。ルートはURLからアクセス可能になるはずです。これらの他のパーミリンクスタイルが機能する可能性はありますがPost name、私にとっては機能し、それ以上は探索しませんでした

設定を変更するために必要なボタンのクリックを示す画像

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.