WordPressでRest APIの投稿タイプを指定する際は"rest_base"を使用する。

作成日:

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

となります。

つまり、投稿やページの場合はそれぞれ投稿タイプ名の複数形のpostspagesで、メディアの場合は投稿タイプ名は本来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を楽しんでいます。

コメントをどうぞ

  • メールアドレスが公開されることはありません。
  • コメント欄にURLは入力できません。
  • このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。