RestAPIを使ってWordPressの記事一覧を表示する

カラーミーショップカスタマイズの一環で、WordPressブログの新着記事を取得して表示させるコードを作りました。

ちょうど別件でpetite-vue(Vue.jsの軽量版)を使った部分カスタマイズをしていたこともあって、WP REST API、petite-vueを使って実装しています。

たまたまカラーミーショップでテストしただけで、scriptタグが有効なhtml編集ができるサイトなら何でも大丈夫です。

WP REST APIでWPの記事データを取得する

WordPressはrest apiという仕組みを使って様々なデータをapiで利用できるようになっています。(https://ja.wp-api.org/

うろ覚えですが、たしかWP4.xか5.xあたりから導入されたと思います。ご利用中のレンタルサーバーがセキュリティ関係でrest-apiを制限している場合もあるので、もし動作しなければサーバーの設定をご確認ください。

新着記事一覧を取得

WP REST APIには色々なタイプがありますが、投稿情報を取得する場合は、

[YOUR WP SITE URL]/wp-json/wp/v2/posts にGETを送るだけです。

標準では10記事取得されますが、パラメータで?per_page= をつけると任意の記事数取得できます。弊社のサイトで5記事取得するなら、

https://mihune-web.com/wp-json/wp/v2/posts?per_page=5 となります。ブラウザでアクセスしてみると下のようなjsonデータが表示されます。

WP REST APIのjsonデータ

おおまかな作業の流れとしては、このjsonデータを非同期通信で取得してページに反映させる となります。

axiosでjsonデータを取得

今記事のJSONデータ取得はaxiosで説明します。

axiosでREST APIを取得するのはシンプルに以下のコードで。

axios
  .get(API_URL)
  .then(処理)

利用しているプラグインやテーマ等によって出力されるjsonデータ項目は異なるので、データの何を利用するかは用途次第です。

petite-vueで出力部分を作る

petite-vueは軽量版のvueでサイズは6kb以下。今回のような部分的な使用には適役です。逆に、アプリケーションや大規模開発には不向きな印象です。

petite-vueやvue-jsについて詳しくは公式ドキュメントを読んでいただくとして、petite-vueも基本的な書き方は大体vue jsと同じです。

petite-vueには@vue:mountedなど一部独特な部分もありますが意味はすぐに分かると思います。

<ul id="myapp" @vue:mounted="getData()">
    <li v-for="item in items">
      <a :href="item.link">{{ item.title.rendered }}</a>
    </li>
</ul>

<script type="module">
import { createApp } from 'https://unpkg.com/petite-vue?module'
const API_URL = 'YOUR_WP_URL/wp-json/wp/v2/posts?per_page=5'
 
createApp({
  items: [],
  getData() {
    axios
      .get(`${API_URL}`)
      .then( response => this.items = response.data )
    }
  }).mount()
</script>

WP埋め込み用コードを販売しています

投稿記事タイトル・アイキャッチ画像・投稿日・投稿カテゴリーを取得し表示させるためのコードをデータ販売しています。

テンプレートのHTML編集で表示させたい場所にコピー&ペーストすればご利用いただけるので、特に専門的な知識は必要ありません。

こちらは記事カテゴリーの絞り込みやカテゴリ情報の表示にも対応しているので、この記事で作ったものより高機能です。

参考

カスタマイズ
シェアする
タイトルとURLをコピーしました