自分のブログの WordPress REST API で JP Markdown で編集している素の Markdown データを取得するメモ

自分のブログの WordPress REST API で JP Markdown で編集している素の Markdown データを取得するメモです。

通常の記事を取得する

この場合は、以下の記事がとっても助かりました。

WP REST APIで独自エンドポイントのカスタマイズで投稿記事を全件取得できるようにする | オウンドメディア | 大阪市天王寺区ホームページ制作 | 合同会社デザインサプライ-DesignSupply. LLC-

ただし、こちらを使っても、JP Markdown でJP Markdown で記事作成している素の Markdown データがありません。

データベースを直接見てみると post_content_filtered という記述で指定してあげるとちゃんと取得できるようです。このあたりを参考にしました。→ 関数リファレンス/wp insert post – WordPress Codex 日本語版

ということで取得できるようにする

外観 > テーマエディタ から functions.php の中に追記します。

function get_post_datas($post) {
	$current_tags = get_the_tags($post->ID);
	$current_tags_name = array();
	foreach($current_tags as $tag) {
	  array_push($current_tags_name, $tag -> name);
	}
    $result = array(
      'ID' => $post->ID,
      'thumbnail' => get_the_post_thumbnail_url($post->ID, 'full'),
      'slug' => $post->post_name,
      'date' => $post->post_date,
      'modified' => $post->post_modified,
      'title' => $post->post_title,
      'excerpt' => $post->post_excerpt,
      'content' => $post->post_content,
      'post_content_filtered' => $post->post_content_filtered,
      'tags' => $current_tags_name
    );
	
	return $result;
}

function add_rest_endpoint_all_posts_from_blog() {
  register_rest_route(
    'api/sample',
    '/test',
    array(
      'methods' => 'GET',
      'callback' => 'get_all_posts_from_blog'
    )
  );
}

function get_all_posts_from_blog() {
  $args = array(
    'post_status' => 'publish',
    'posts_per_page' => $_REQUEST['posts_per_page'],
	'offset' => $_REQUEST['offset']
  );
  $all_posts = get_posts($args);
  $result = array();
  foreach($all_posts as $post) {
    $data = get_post_datas($post);
    array_push($result, $data);
  };
  return $result;
}
add_action('rest_api_init', 'add_rest_endpoint_all_posts_from_blog');

このように追記しました。 register_rest_route の関数で 'api/sample'test と指定されているところは自分の取得したい独自APIのアドレスで指定します。

この API で実装がうまく行くと、以下のように post_content_filtered に、今まで書いていた Markdown 記述が入っています。

image

この API があれば、記事データをどこかに保管しておきたいときに活用していけそうです。