Open3

WordPress REST API 備忘録

ichitadonichitadon

最新記事一覧を取得する

https://example.com/wp-json/wp/v2/posts

ID指定で記事情報を取得する

https://example.com/wp-json/wp/v2/posts/${id}

Slug指定で記事情報を取得する

https://example.com/wp-json/wp/v2/posts?slug=${slug}

記事のサムネイルを取得する

記事情報で取得できる featured_media が記事に指定されているサムネイルの情報。

author: 1,
featured_media: 1,
comment_status: "closed",
ping_status: "open",
sticky: false,
template: "",
format: "standard",
meta: [ ],

これをもとにメディア情報のAPIでアクセスする。

https://example.com/wp-json/wp-json/wp/v2/media/${id}
ichitadonichitadon

認証ありで未公開記事の情報を取得する

事前準備

WordPressのコンソールから、[ユーザー] -> [プロフィール] -> [アプリケーションパスワード] で予めパスワードを設定しておく。

取得

非公開投稿の下書き・予約投稿の場合は、Basic認証でUserID/Passwordを定義した状態で、ID指定で記事情報を取得する。
Slug指定で取得した場合は空のjsonが返される。

https://example.com/wp-json/wp/v2/posts/${id}
ichitadonichitadon

REST APIのレスポンスにカスタムフィールドの値を追加する

Wordpressのコンソールのテーマ編集などで、functions.phprest_api_init へのアクションフックを指定し、register_rest_field関数を実行するように定義する。

register_rest_field関数は、第一引数に対象のオブジェクト、第二引数にレスポンスに追加する属性名、第三引数に登録の定義を指定する。get_callback には連想配列を返す関数を指定する。

// REST API用関数
add_action( 'rest_api_init', 'api_add_fields' );
function api_add_fields() {
  register_rest_field( 'post',
    'attribute',
     array(
      'get_callback'    => 'get_custom_params',
      'update_callback' => null,
      'schema'          => null,
    )
  );
}

function get_custom_params () {
  return array(
    'custom_params1' => XXXXX,
    'custom_params2' => YYYYY,
  );
}

参考:
https://developer.wordpress.org/reference/functions/register_rest_field/