web-dev-qa-db-ja.com

なぜper_pageがカテゴリで機能しないのですか WP API?

はじめに私はいくつかの質問とドキュメントの部分を調べてきましたが、WordPressのv2でそれは古い質問の多くはもはや有効ではないようです。私がやろうとしているのは、functions.phpのAPIを修正する必要なしに、一般的に返される10の投稿の代わりに、すべての投稿または単一の投稿をPostmanのカテゴリーから取得することです。

tldr

REST AP​​Iハンドブック を参照し、 schema を検討することから始めました。categoriesを見て、次の10つの最新のカテゴリを返すことができます。

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello

引数 を参照するとper_pageが表示されるので試してみました。

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello?per_page=‌​1

そしてそれはカテゴリhelloから10の投稿を返すので私は修正してみました:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello&per_page=‌​1

そして私はエラーが返されます:

{"code": "rest_invalid_param"、 "message": "パラメータが無効です:per_page"、 "data":{"status":400、 "params":{"per_page": "per_pageは整数型ではありません" }}}

Googleで検索するI Wordpressでカテゴリ/タグのリストを取得する方法を参照REST AP​​I しかし回答はv1に基づいています。

Wordpress APIのJSON戻り制限を試す 私が使用します:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1

そして私は特異な投稿を得たので、私の試みを修正しました:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1$categories_name=hello

カテゴリの種類を無視して最新の投稿を返します。 Reading WordPress APIを使って特定のカテゴリーの中で10以上の投稿を取得します 使用後にカテゴリーのID(4)を取得しました:

http://foobar.com/wp-json/wp/v2/categories

それからコーディングしなさい:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​1

そして私は得ます:

{"code": "rest_invalid_param"、 "message": "パラメータが無効です:per_page"、 "data":{"status":400、 "params":{"per_page": "per_pageは整数型ではありません" }}}

テーマの開発と同じように-1を使用できるかもしれないと思いましたが、エラーが発生しました。

私が読んだ他の参考文献は:

ページ区切り に関するドキュメントを確認した後、それはpostでのみ動作し、categoryでは動作しないようです。 /wp-json/wp/v2/posts?per_page=20を使用した場合も、10件以上の投稿しかできません。

質問

サイトのWP AP​​Iを呼び出すとき、カテゴリのper_pageの戻りを1つの投稿またはすべての投稿に制御するにはどうすればよいですか。

数時間後にカテゴリの収益を得る方法の異なる順列を試してみたところ、私は自分の答えを見つけました。 postに関連するカテゴリのリストを確立するには、次のようにします。

/wp-json/wp/v2/categories/

特定のカテゴリが必要で、そのカテゴリのid4で、スラッグはfoobarと呼ばれていました。

カテゴリfoobarに関連する1の投稿を取得するには、使用しなければなりませんでした:

/wp-json/wp/v2/posts?categories=4&per_page=1

カテゴリfoobarに関連する100の投稿を取得するには:

/wp-json/wp/v2/posts?categories=4&per_page=100

-1の使い方の answer という論理が間違っていたので、1から100までしか使えません。 100を超える投稿、offsetを使用してページを呼び出すことができます。ドキュメントの下に、 ページ付け があります。

/wp-json/wp/v2/posts?categories=4&offset=10&per_page=1

100以上の言語を取得するには、希望する言語でループを作成し、それをファイルにプッシュします。 /wp-json/wp/v2/categories/の下でのループを容易にするために、そしてあなたがカテゴリを参照するときあなたはcountの下にあるidの下で合計カウントを参照することができます。

使用しているURLのほとんどすべてが何らかの形で無効です。

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello

categories_nameは、投稿をリストするための 有効な引数 ではなく、たとえクエリ文字列の?部分が欠落していてもです。

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello?per_page=‌​1

これには?もありません。 APIが引数に使用するURLのクエリパラメータは、?で始まる必要があり、追加のパラメータには&で始まる必要があります。正しくフォーマットされたクエリ文字列は次のようになります。

http://domain.com/path/?argument=value&argument2=value2

だからこれは:

http://foobar.com/wp-json/wp/v2/posts/categories_name=hello&per_page=‌​1

?も欠落していますが、今回は&を正しく使用しました(ただし、無効なcategories_name引数を使用しています)。

これです:

http://foobar.com/wp-json/wp/v2/posts/?per_page=‌​1$categories_name=hello

何らかの理由で$を使用しています。これは、クエリ文字列内のパラメータを分離する有効な方法ではありません(無効なcategories_name引数を使用しています)。

これはis正しい:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​1

しかし、あなたのコメントに基づいて:

テーマの開発と同様に-1を使用できるかもしれないと思っていましたが、エラーが発生しました。

あなたが実際に試したようです:

http://foobar.com/wp-json/wp/v2/posts/?categories=4&per_page=‌​-1

-1は無効な値であるため、どのは機能しません。 APIを使用して取得できる結果は、1100の間のみです。

2
Jacob Peattie