WordPress REST APIで「新規投稿のみ取得」し、更新された記事を除外する

No Image.
目次

REST APIのエンドポイントをカスタマイズして、初回投稿日と更新日時を比較する

概要

テーマやプラグインにPHPコードを追加して、独自のRESTエンドポイントを作成し、新規投稿のみ返すようにする方法です。

add_action('rest_api_init', function () {
    register_rest_route('custom/v1', '/new-posts/', [
        'methods'  => 'GET',
        'callback' => 'get_new_posts_only',
    ]);
});

function get_new_posts_only($request) {
    $args = [
        'post_type'      => 'post',
        'posts_per_page' => 10,
        'orderby'        => 'date',
        'order'          => 'DESC',
    ];

    $query = new WP_Query($args);
    $posts = [];

    foreach ($query->posts as $post) {
        if ($post->post_date === $post->post_modified) {
            $posts[] = [
                'id'    => $post->ID,
                'title' => get_the_title($post),
                'date'  => $post->post_date,
            ];
        }
    }

    return $posts;
}

エンドポイント例:

https://your-site.com/wp-json/custom/v1/new-posts/

使用目的

アプリでのPUSH通知などで、更新された記事は除外したい場合などに使用することができる。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次