WordPress に Vue.js を スモールスタートで入れてみる その3
とあるサイトでVue.jsで作っていて、公開してからもろもろやったことまとめ その3
今回はACFオプションページのリピーターフィールドについて
ACF オプションページ リピーターフィールドの取得・出力
カスタムフィールドは、
- sample_field(繰り返しフィールド)
- sample_field_title(テキスト)
- sample_field_text(テキストエリア)
https://siteUrl.com/wp-json/acf/v3/options/options/ では
{ "acf":{ "sample_field":[ { "sample_field_title":"title01-title01-title01", "sample_field_text":"text01-text01-text01" }, { "sample_field_title":"title02-title02-title02", "sample_field_text":"text02-text02-text02" }, // ... ] } }
のようにAPIが吐かれる。そのうえで sampleField.vue(親)
から sampleFieldBlock.vue(子)
に props でオブジェクトを渡して、子コンポーネントで出力
sampleField.vue
<template> <sample-field-block:option="option"> </sample-field-block> </template> <script> import { API_OPTION_URL } from './../variable' import axios from 'axios'; import SampleFieldBlock from './../component/sampleFieldBlock'; export default { components: { SampleFieldBlock }, data() { return { option: {} } }, mounted() { axios .get(`${API_OPTION_URL}`) .then((response) => { this.option = response.data.acf; }) } }; </script>
sampleFieldBlock.vue
<template> <section v-if="option.sample_field"> <h1>Title</h1> <section v-for="(group,index) in option.sample_field" :key="index"> <h2>{{group.sample_field_title}}</h2> <div> <p>{{group.sample_field_text}}</p> </div> </section> </section> </template> <script> export default { props: { option: Object } }; </script>