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

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

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

JAMstackは、JavaScript・API・Markupの頭文字を取ったWebアプリケーションアーキテクチャです。事前に構築されたHTMLをCDN上で配信。高いパフォーマンスとセキュリティが特徴です。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

WordPress

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

Q&A

解決済

1回答

1701閲覧

WordPressでREST APIを使用して、独自エンドポイントを作成したい

seisei

総合スコア19

JAMstack

JAMstackは、JavaScript・API・Markupの頭文字を取ったWebアプリケーションアーキテクチャです。事前に構築されたHTMLをCDN上で配信。高いパフォーマンスとセキュリティが特徴です。

REST

REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

WordPress

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

0グッド

0クリップ

投稿2021/09/01 11:56

編集2021/09/01 11:58

WordPressとNext.js を使用して、ブログサイトを作成しているものです。
そこでご質問したいのが、RESTAPIを使用してデータの受け渡しをしたいと思っているのですが、
一覧は取得できたのですが、詳細ページの取得ができないので、どなたかご教授お願いできますでしょうか?

一応下記記事を参考に自分で独自エンドポイントを作成してみました。
https://notes.sharesl.net/articles/751/

一覧ページは問題なく取得できています。問題は詳細ページの取得です。
こちらは取得できた↓
https://{ドメイン}/wp-json/custom/v0/works
こちらは取得できてない↓
https://{ドメイン}/wp-json/custom/v0/works/id

functionphp

1 2function add_custom_endpoint() 3{ 4 // 5 register_rest_route( 6 //ネームスペース 7 'custom/v0', 8 //ベースURL 9 '/skills', 10 //オプション 11 array( 12 'methods' => WP_REST_Server::READABLE, 13 'callback' => 'skills_data' 14 ) 15 ); 16 register_rest_route( 17 //ネームスペース 18 'custom/v0', 19 //ベースURL 20 '/works', 21 //オプション 22 array( 23 'methods' => WP_REST_Server::READABLE, 24 'permission_callback' => '__return_true', 25 'callback' => 'works_data' 26 ) 27 ); 28} 29add_action('rest_api_init', 'add_custom_endpoint'); 30 31//APIの権限をチェックする関数 32function rest_permission(){ 33 return current_user_can('publish_posts'); 34} 35 36function rest_response($file_name, $param = null) { 37 $api_file = locate_template("api/${file_name}.php"); 38 $res = !empty($api_file) ? include_once $api_file : [1]; 39 $response = new WP_REST_Response($res); 40 $response->set_status(200); 41 return $response; 42} 43 44function skills_data($param) 45{ 46 return rest_response('skills-data', $param); 47} 48 49function works_data($param) 50{ 51 return rest_response('works-data', $param); 52} 53
<?php $post_data = []; $post_args = [ 'post_type' => 'works', 'posts_per_page' => -1, 'post_status' => 'publish', 'orderby' => 'date', 'order' => 'DESC' ]; $post_query = new WP_Query( $post_args ); if ( $post_query->have_posts() ) : while ( $post_query->have_posts() ) : $post_query->the_post(); global $post; $post_data[] = [ //記事ID 'id' => $post->ID, //公開日 'time' => get_the_time('Y.m.d'), 'title' => get_the_title(), 'thumbnail' => get_the_post_thumbnail_url( get_the_ID(),"large"), 'startData' => post_custom('startData'), 'endData' => post_custom('endData'), 'language' => post_custom('language'), 'FlameWork' => post_custom('FlameWork'), 'Use' => post_custom('Use'), 'link' => post_custom('link'), 'Github' => post_custom('Github'), 'category' => get_the_term_list($post->ID,'works_cat'), 'category_slug' => $cat_slug, //タグ 'tags' => get_the_terms($post->ID, 'works_tag'), ]; endwhile; wp_reset_postdata(); endif; return $post_data; ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下のような感じで、IDを受け取れるようになると思います。
IDは、works_dataの$param内に追加されると思うので、これを用いて記事情報を取得できると思います。

diff

1register_rest_route( 2 //ネームスペース 3 'custom/v0', 4 //ベースURL 5- '/works', 6+ '/works/(?P<id>\d+)', 7 //オプション 8 array( 9 'methods' => WP_REST_Server::READABLE, 10 'permission_callback' => '__return_true', 11 'callback' => 'works_data' 12 ) 13 );

URL Params

投稿2021/09/02 06:17

hayato7

総合スコア1135

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問