REST API を 自分なりに 使いやすいようにしてみた
元々 使いやすい 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; }
みたいな感じで 取得できるようになるかと思います
使い所は限られるかもしれないけど カスタマイズして 使ってみてください
エラー報告 お待ちしております!!