WordPressでRest APIの投稿タイプを指定する際は"rest_base"を使用する。
作成日:
2018年12月16日
WordPressのRest APIが便利なことにようやく気づき、テーマのオプションで使おうといじっています。
そこで気づいたのですが、例えば投稿リストを取得する際は
Shell [1]
hogehoge.com/wp-json/wp/v2/posts
ページの場合は
Shell [2]
hogehoge.com/wp-json/wp/v2/pages
メディアの場合は
Shell [3]
hogehoge.com/wp-json/wp/v2/media
となります。
つまり、投稿やページの場合はそれぞれ投稿タイプ名の複数形のposts、pagesで、メディアの場合は投稿タイプ名は本来attachmentなのだけど、mediaとしなければなりません。
それではそれらのURLパラメータをどのように取得するか?
そのためには、get_post_type_object()
を使い、以下のように取り出します。
PHP [1]
get_post_type_object( $post_type )->rest_base;
関数リファレンス/get post type object - WordPress Codex 日本語版
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_type_object
登録済み投稿タイプを表すオブジェクトを取得します。 初めから組み込まれている 'post'(投稿)、'page'(固定ページ)等や、カスタム投稿タイプも対象です。
また、カスタム投稿タイプでRest APIを使用するには、予めカスタム投稿の登録時に
PHP
register_post_type(
'custom_post',
array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'exclude_from_search' => false,
'show_ui' => true,
'show_in_menu' => true,
'show_in_rest' => true,
'rest_base' => 'custom_post',
'menu_position' => 5,
'rewrite' => array( 'slug' => 'custom_post' ),
)
);
と、
PHP [10-11]
'show_in_rest' => true,
'rest_base' => 'custom_post',
を設定しておく必要があります。
また、タクソノミーの場合だと、
カテゴリー
Shell [4]
hogehoge.com//wp-json/wp/v2/categories
タグ
Shell [5]
hogehoge.com//wp-json/wp/v2/tags
で取得して、URLパラメータは
PHP [2]
get_taxonomy( $taxonomy )->rest_base;
となります。
物草 灸太郎
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ