CPIスタッフブログはレンタルサーバーナレッジにうまれ変わりました。API』のpostエンドポイントを使ってブログの内容を取得する方法についてご紹介しました。API』に用意されているカスタムエンドポイント機能を使って、より使いやすいオリジナルのエンドポイントを追加して、思いどおりの情報を取得する方法をご紹介いたします。API』がWordPressの内部でどのような動きをしているのかより深く理解することができます。API』はさまざまなエンドポイントがはじめから用意されていますが、それらのエンドポイントだけでは欲しい情報が得られないことがあります。いった場合に、オリジナルのエンドポイントを追加して、どのテーブルからどういう値を取得するかなどの処理を自由に実装できるカスタムエンドポイント機能が用意されています。API』が用いられることが多いですが、そのような場合にカスタムエンドポイント機能でエンドポイントを自作すれば、連携先のシステムのデータ形式に合わせて実行結果を自由に整形できるのでとても便利です。カスタムエンドポイント機能が役に立つのはデータを参照する場合だけではありません。API』を通して複雑な処理(~~の場合は登録、~~の場合は削除など)を行いたい場合に、オリジナルのエンドポイントを作れば1度の呼び出しで全ての処理が完結します。次章では実際に「ユーザーの一覧とそのユーザーが投稿した記事の一覧を取得する」という機能のエンドポイントをWordPressに追加してみます。エンドポイントを追加するオリジナルのエンドポイントを作成するために、WordPressで現在適用しているテーマのfunctions.phpに追加するエンドポイントの「URLの定義」と「実行する処理」を追加していきます。エンドポイントのURLを定義するまずエンドポイントを実行するためのURLを定義します。ここで定義するのは、(投稿を取得するエンドポイントの場合)/wp-json/wp/v2/postsの「/wp/v2/posts」にあたる部分です。以下の内容を追加してください。'add_rest_original_endpoint');register_rest_route関数の第一引数「wp/custom」と第二引数「/posts_by_users」がエンドポイントのURLになります。今回作成するエンドポイントのURLは<WordPressのトップページ>/wp-json/wp/custom/posts_by_usersとなります。エンドポイントにアクセスした際に実行される関数名(get_posts_by_user)を文字列で指定します。処理を実装する2.1でコールバック先に指定したget_posts_by_user関数を作成して、処理の内容を実装していきます。処理の内容は2.1と同じくfunctions.phpに追加していきます。$result;}get_users関数でユーザー(上限20人)の情報を取得した後、それらのユーザーが投稿したブログをget_posts関数で取得するという処理です。get_users関数やget_posts関数の実行結果には今回のAPIに不要な情報まで含まれますので、必要な情報(ユーザーID、ユーザー名、投稿したブログのタイトル、ブログのURL)だけを抜き出して戻り値$resultに設定しています。APIの実行結果として受け取れるのはJSONというデータ形式の文字列ですが、今回作成したget_posts_by_users関数の戻り値はPHPのオブジェクト(配列)をそのままreturnしてください。※自動的にJSON文字列に変換されますので、json_encode関数を使って変換する必要はありません。追加したエンドポイントにアクセスするまずは、2.で追加したオリジナルのエンドポイントにWebブラウザでアクセスしてみましょう。/wp-json/wp/custom/posts_by_usersJSON文字列で、ユーザーの情報とブログの情報が取得できていることを確認してください。取得できていない場合は、URLが間違っていないか、2.の実装が間違っていないかを確認してください。確認できたら、つぎはJavaScriptを利用して、オリジナルのエンドポイントからデータ取得し、ユーザーごとの投稿一覧をWebブラウザの画面に表示してみましょう。console.error('WordPressのブログ記事取得に失敗しました。});});</script>$.ajaxのurlに2.で追加したオリジナルのエンドポイントのURLを指定します。あとは実行結果に合わせてHTMLを組み立てていくだけです。API』のカスタムエンドポイント機能を使ってオリジナルのエンドポイントを追加する方法をご紹介いたしました。API』のエンドポイントは(カスタムエンドポイントを含めて)リクエストパラメータを指定することも可能です。指定したユーザーID(またはユーザー名)に一致するユーザーの投稿情報を取得する、といった処理を実装することも可能です。リクエストパラメータとカスタムエンドポイントを組み合わせれば、さらに自由度の高いエンドポイントの処理を実装することができますので、ぜひ調べて使いこなしてみてください。SV-Basic」を語る!TwitterCPIのTwitterアカウントでは、サイト、サーバー管理者のための重要なセキュリティ情報や、サイト運営者のためのヒント、お得なキャンペーン情報をお知らせしています。cpiadjpツイートPocket掲載内容について、当社は情報の掲載には細心の注意を払っておりますが、完全性などについて保証を行うものではありませんので予めご了承ください。許諾等について問題が発生した場合などについて、当社は一切の責任を負いません。掲載されている情報を利用したサイト製作については、ご自身の責任において行ってください。