GIGLT.20
JUST HACK IT
WordPressとNuxt.jsで実現する
SPA
Ryuichi Kataoka
突然ですが
こんなサイトないですか?
ローディングが長く読む気をなくすサイト
本文にHTMLべた書きで運用しづらいサイト
WordPress + Gutenberg
と
Nuxt.jsで
SPA化してしまおう!
Gutenbergと ?
WordPress 新しいエディタ。
とても編集しやすい。
Gutenbergと
実際に使ってみましょう!
Gutenbergと
Gutenbergと
2カラム(画像と本文を横に並べる)や YouTube 埋め込み等
お手 物だわ!
HTMLとして挿入する機能も備わっている で HTMLべた書きできる!
やったー!!!
ん?(こいつ何 ために CMS使っているんだろう・・・
SPAにする
メリット
顧客体験 向上
● インタラクティブなサイトが作りやすい
(表現 自由度が向上)
● 少ない通信でコンテンツを読むことができる(滞在
時間 長いサイトに 最適)
SPAにするメリット そ 1
表示速度 高速化
● キャッシュを最大限使用することができる
● 離脱率 低下を防ぐことができる
(表示速度が1秒遅れるとコンバージョンが7%低
下する)
SPAにするメリット そ 2
インフラ・エンジニア コスト削減
● 従量課金系 クラウドサービス 費用を
抑えることができる
● Nuxt.jsを使用することでSPA 実装工数
比較的少なく実現できる
SPAにするメリット そ 3
そもそもなぜ
WordPress?
全Webサイト 3分 1でWordPressを
使用されていると言われている
即ち、3分 1 サイトがコンテンツ
という資産をWordPress上に蓄えられている
そもそもなぜWordPress? - そ 1
コンテンツを運用される方に
WordPressで 運用ノウハウがある
最近話題 Headless CMSで
運用するに 結構障壁がある
そもそもなぜWordPress? - そ 2
そもそもなぜWordPress? - そ 3
単純に
WordPressが
好きだから
SPA化へ 道
WP REST APIを非同期で取得
· 記事一覧データ or 記事データをWP REST APIから
取得し、Nuxt.jsで描画する
· 一番実装 工数が少なく実現できる
· SEO的な課題 ある
SPA化へ 道 そ ①
アクションフックで静的にしてしまう
· 記事やメニュー等各種変更時、アクションフックで
JSON等にしてしまい、S3等に配置
· おそらく最速で表示することができるし、CDNとかに
おけ さらにすごいことになる
· WordPressに障害が発生してもとりあえずコンテンツ 見れる
SPA化へ 道 そ ②
今回 WP REST APIを非同期で取得する
方法でやっていきたいと思います☺
SPA化へ 道
WP REST API
と ?
(例) 記事一覧を取得する場合
{site_url}/wp-json/wp/v2/posts 
にアクセスするとJSONでデータが返ってくる
WP REST APIと ?
主なパラメータ(記事一覧)
· per_page=(n) : n件を一覧で取得することができる
· page=(n)  : nページ目 一覧を取得することができる
        (per_pageとセットで使う)
· _embed    : カテゴリー名を含めることができる
· context=embed: 一覧 データ内にpost_contentを含めない
WP REST APIと ?
実際にみてみましょう!
WP REST APIと ?
実際に作って
みよう!
実際に作ってみよう!
nuxt.config.jsに
axiosを導入し、envにサイト URLを追加

← 非同期でデータ取ってくるすごいやつ
← 日付を扱いやすくしてくれる
  すごいやつ
追加
実際に作ってみよう!
storeにindex.jsを追加

これから作成するファ
イルを読み込む
Storeに登録
実際に作ってみよう!
storeにstate.jsを追加
state ページ間等で使える便利な変数
← 投稿一覧データが入る
← ページャー 番号が入る
← 最初に一覧に訪れたかどうか
  判別する
実際に作ってみよう!
storeにmutations.jsを追加
主に同期処理を担当しています
← 取得した記事一覧を登録
← ページャー番号を登録
← ページャー番号1つ次に送る(インクリメント)
← 記事一覧へ アクセスが初回かどうか
実際に作ってみよう!
storeにactions.jsを追加
主に非同期処理を担当しています
実際に作ってみよう!
pages/index.vueで実際に使ってみよう!
実際に作ってみよう!
データがセットされていることが確認できました!
実際に作ってみよう!
pages/index.vueに記事一覧を表示してみよう!
実際に作ってみよう!
記事一覧が表示されました!
実際に作ってみよう!
pages/_postSlug/index.vueで詳細ページを作ろう!
実際に作ってみよう!
pages/_postSlug/index.vueで詳細ページを作ろう!
↓ タイトル
↑ 本文
実際にみてみましょう!
実際に作ってみよう!
One more thing...
うち メディアを
SPA化してみた
実際にみてみましょう!
うち メディアをSPA化してみた
有難うございました🙏
Good is good.
We provide opportunities to the SEKAI by fusing technology and ideas.
テクノロジーとクリエイティブでセカイをより良くする
       こと


LT.20 Wordpress x nuxt.jsで実現するSPA