質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

7029閲覧

wordpressのrest apiで100件以上のデータを取り出し外部サイトで表示させる方法

tomato01

総合スコア82

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

2クリップ

投稿2020/01/11 14:28

編集2020/01/11 14:29

宜しくお願い致します。

wordpressのrest apiで100件以上のデータを取り出し、外部のサイトで表示させることを考えております。

これまでは、ブラウザからrest apiを叩き、ブラウザに表示されたjsonデータを手動でコピー&jsonファイルを作成し、
jsのスクリプトから読み込ませていました。

ただ、今後は$.ajaxで自動でその都度、読みませることで考えております。

下記のようなコードで一部のwordoressのデータを$.ajaxで取り出すことはできているのですが、下記の問題がありどう処理をしようか考えております。

<!-- jsonデータ読み込み --> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> $(function(){ $.ajax({ type: 'GET', url: '★WPのアドレス★/wp-json/wp/v2/posts?per_page=100', dataType: 'json' }).done(function(json){ //成功時の処理の内容を記載 } }).fail(function(json){ //失敗時の処理を記載 }); }); </script>

問題点

1、
確かwordpressのrest apiの仕様で1アクセスに最大で100件までしか取得できず、100件目以降は下記のように指定をして取得をしてました。

 ★WPのアドレス★/wp-json/wp/v2/posts?per_page=100&offset=100

仮に$.ajaxで全てのデータを1度に取得したいと思った場合、urlを2つ指定してまとめて取得をすることなどはできるのでしょうか。(2回ブラウザアクセスをする代わり)

※もし1アクセスで100以上取得できる方法があるようでしたらご教授を頂けましたら幸いです。

2、
手動で行っていた際は、2つのjsonファイルを1つにまとめる為、手動で整形をしてました。(配列の一番外側の[]を全体で1セットにする作業)
仮に上記の1で取得ができる場合、整形などはやる必要はないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

多分こうすればよいと思います(未検証)。

【Increasing the Max Results Returned from the WordPress REST API - WP Scholar】
https://wpscholar.com/blog/increasing-the-max-results-returned-from-the-wordpress-rest-api/

PHP

1add_filter( 'rest_post_collection_params', function ( $params, WP_Post_Type $post_type ) { 2 if ( 'post' === $post_type->name && isset( $params['per_page'] ) ) { 3 $params['per_page']['maximum'] = 200; 4 } 5 6 return $params; 7}, 10, 2 );

カスタム投稿タイプとかはpost部分をスラッグに換えたフックを使う。

【rest_{$this->post_type}_collection_params | Hook | WordPress Developer Resources】
https://developer.wordpress.org/reference/hooks/rest_this-post_type_collection_params/

ちなみにデフォルトはここで指定されていました。(最大100)

【WP_REST_Controller::get_collection_params() | Method | WordPress Developer Resources】
https://developer.wordpress.org/reference/classes/wp_rest_controller/get_collection_params/

投稿2020/01/12 17:01

kei344

総合スコア69583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomato01

2020/01/13 00:13

ご回答を頂き誠にありがとうございます。 こういった記載ができるとは知りませんでした! 尚、頂いたPHPコードは下記のファイルを変更する流れ認識であってますでしょうか。  wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php
KazuhiroHatano

2020/01/13 01:09

WPのカスタマイズは回答にあるようにフィルタフックでやるが基本 コアファイルを直接編集するのはNGです コードを書く場所はテーマのfunctions.phpか あるいはプラグインにするというのが相場です
tomato01

2020/01/13 01:38

ご回答を頂き誠にありがとうございます。 ご指摘の点承知いたしました。 Function.phpで対応するように致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問