てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

元々 使いやすい WP Rest Api ですが
自分が よく使うパターンで class 化 しました


データは 自分が よく使うものに 絞ってしまっていますので
使いやすいように 改造していただければ…

sticky 周りは 結構雑で あれ?? 投稿が 表示されない… なんて 事が起きたら 多分 ココを 最初に考えたら良いと思います

まだ 深く使ってないので エラーがあるかもしれませんが ざっと こんな感じです

コメントもついてないので 読みにくいと思います… (スミマセン)

何度も API を 読みに行くと 負荷が高くなってしまうかな?? なんて 考えたので 30分の間 キャッシュしています
(使う時は 環境に合わせて変えてください : $this->cache_time = 60 * 30;)

キャッシュする場所は ファイルがある場所の jr_get_contents_cache という ディレクトリ以下 に 作成します
(使う時は 環境に合わせて変えてください : $this->cache_dir = realpath( __DIR__ . ‘/jr_get_contents_cache’ );)

ファイルは chmod で 666 に していますので 書き換えてください
(使う時は 環境に合わせて変えてください : chmod( $cache_path, 0666 );)

データの取得は cURL を 使っています
(タイムアウトは 5秒 です : $curl_option あたり)


使い方は そのまま 使う場合 は

function get_campaign_post() {
  $ary_api_url = array(
    ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . "/wp-json/wp/v2/posts?_embed&per_page=20",
  );

  $api_object = new jr_get_contents;
  $api_posts = $api_object->get_wp_rest_api( $ary_api_url );

  return $api_posts;
}

みたいな感じで 使用します


タグ等で 絞りたい場合は ID が 分かれば 基本的な ルールに則って URLを 変更すればよいのですが スラッグを 使用するのであれば 取得元に プラグインを 入れると 使いやすくなります

私は WP REST API filter parameter という プラグインを使用しています

WP-API/rest-filter: Restores the `filter` param to post enpdpoints.
https://github.com/WP-API/rest-filter

WP REST Filter を 使っても 問題ないかもしれません
(試していないため エラーが出るかもしれません)

WP REST Filter
https://wordpress.org/plugins/wp-rest-filter/
function get_campaign_post() {
  $tag_name = 'campaign-1887';

  $ary_api_url = array(
    ( is_ssl() ? 'https' : 'http' ) . '://' . $_SERVER['HTTP_HOST'] . "/wp-json/wp/v2/posts?_embed&per_page=20&filter[tag]={$tag_name}",
  );

  $api_object = new jr_get_contents;
  $api_posts = $api_object->get_wp_rest_api( $ary_api_url, true );

  return $api_posts;
}

みたいな感じで 取得できるようになるかと思います


使い所は限られるかもしれないけど カスタマイズして 使ってみてください

エラー報告 お待ちしております!!

Related Article

キャッシュを使って 少しでも クエリ数を 抑える方法

詳細へ »

WP Super Cache を 導入してみました!!

詳細へ »

JS で WordPress の 投稿を表示させる

詳細へ »