Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ブロックエディターを用いたWEBサイト開発とカスタムフィールドのあり方を考える。/ WordC...
Search
Toro_Unit (Hiroshi Urabe)
June 20, 2021
Technology
0
650
ブロックエディターを用いたWEBサイト開発とカスタムフィールドのあり方を考える。/ WordCamp Japan 2021
#wcjpn2021
WordCamp Japan 2021 の登壇資料です。
Toro_Unit (Hiroshi Urabe)
June 20, 2021
Tweet
Share
More Decks by Toro_Unit (Hiroshi Urabe)
See All by Toro_Unit (Hiroshi Urabe)
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
250
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
530
ブロックテーマとこれからの WordPress サイト制作 / nishinomiya.dev@2025-12-21
torounit
1
270
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
790
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
700
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
300
Cloudflare Meetup Nagano Vol.3
torounit
1
160
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
8k
Cloudflare Pages に入門してみた / 2023-10-14 Cloudflare Meetup Nagano Vol.2
torounit
2
2.2k
Other Decks in Technology
See All in Technology
テストプロセスにおけるAI活用 :人間とAIの共存
hacomono
PRO
0
120
AWS Systems Managerのハイブリッドアクティベーションを使用したガバメントクラウド環境の統合管理
toru_kubota
0
110
CyberAgentの生成AI戦略 〜変わるものと変わらないもの〜
katayan
0
280
SLI/SLO 導入で 避けるべきこと3選
yagikota
0
140
AI時代のオンプレ-クラウドキャリアチェンジ考
yuu0w0yuu
0
160
スピンアウト講座03_CLAUDE-MDとSKILL-MD
overflowinc
0
450
スピンアウト講座01_GitHub管理
overflowinc
0
480
Agent Skill 是什麼?對軟體產業帶來的變化
appleboy
0
170
スピンアウト講座02_ファイル管理
overflowinc
0
450
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
2
13k
エンジニアリングマネージャーの仕事
yuheinakasaka
0
120
Laravelで学ぶOAuthとOpenID Connectの基礎と実装
kyoshidaxx
4
1.6k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Why Our Code Smells
bkeepers
PRO
340
58k
My Coaching Mixtape
mlcsv
0
82
Six Lessons from altMBA
skipperchong
29
4.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Into the Great Unknown - MozCon
thekraken
40
2.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
410
AI: The stuff that nobody shows you
jnunemaker
PRO
3
460
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Building Applications with DynamoDB
mza
96
7k
Between Models and Reality
mayunak
2
240
Transcript
ϒϩοΫΤσΟλʔΛ༻͍ͨWEB αΠτ։ൃͱΧελϜϑΟʔϧυͷ ͋ΓํΛߟ͑Δɻ WordCamp Japan 2021 / Toro_Unit 1
$ whoami 2
Toro_Unit /෦ ߛ (͏Β ͻΖ͠) • Frontend Engineer • WordPress
Plugin and Theme Developer • ݝদຊࢢࡏॅɻձࣾࡳຈɻ Github: @torounit Twi/er: @Toro_Unit 3
Gutenberg ͷίϯτϦϏϡʔτ • ຊޠೖྗͷόάใࠂ&ςετ • ΧελϜHTMLϒϩοΫͷϓϨϏϡʔػೳͷ editor-style ͷద ༻ɻ •
wp-env ͷ destroy ػೳɻ • όάϑΟοΫεͱ͔ɻ 4
2018ɺϒϩοΫΤσΟλʔ͕ WordPress ʹಋೖ͞Εͨޙ͔ΒϒϩοΫ ΤσΟλʔΛ͕ͬͭΓ׆༻ͨ͠αΠτΛ ࡞͖ͬͯ·ͨ͠ɻ 5
6
Ҿ༻ݩɿӡ༻࠷େݶߟྀʂίʔϙϨʔταΠτͰͷϒϩοΫΤσΟλϑϧ׆༻ͷࣄྫ / WordCamp Osaka 2019 ୩ 7
ϒϩοΫΤσΟλʔҎલ 8
Ҿ༻ݩɿΧελϜϑΟʔϧυۀ͔Βͷ٫ ʙϒϩοΫΤσΟλʔʢGutenbergʣΛΧελϜ͢Δํ๏ʙ / Shizumi Yoshiaki 9
ΫϥγοΫΤσΟλʔͰԣฒͼͷϨΠΞτͷ࣮ݱ͕ͱͯ ͍͠ͷͰɺϨΠΞτΛݻΊ্ͨͰೖྗཝʹίϯςϯπΛૠೖ ͍ͨ͠ͱ͍͏ཉٻɾཁ݅ɻ ΧελϜϑΟʔϧυͷϓϥάΠϯͰϨΠΞτͳͲΛ੍ޚɻηΫ γϣϯ͝ͱͷݟग़͠ɺίϯςϯπೖྗཝɻ ฤूը໘ͷUIΛ੍ޚ͢Δํ๏ = ΧελϜϑΟʔϧυ 10
σϝϦοτ • WordPress ͷݕࡧʹҾ͔͔ͬΒͳ͍ɻ • ௨ৗͷςʔϚͷ࡞ΓํͰίϯςϯπ͕ग़ྗ͞Εͳ͍ɻ 11
ϒϩοΫΤσΟλʔҎޙ • ϒϩοΫύλʔϯ / ϒϩοΫςϯϓϨʔτΛ༻͍Δ͜ͱͰɺUX Λ্͔ͭɺσϝϦοτ͕ղܾ͞Εͨɻ • γϣʔτίʔυͳͲɺWYSIWYG తʹඍົͳػೳɺμΠφ ϛοΫϒϩοΫͰײతͳฤू͕Մೳʹɻ
12
ΧελϜϑΟʔϧυෆཁʹͳͬͨͷ͔ʁ 13
ͦΜͳ͜ͱແ͍ŋŋŋ 14
Usecase • ΠϕϯτใͰɺهࣄͷެ։࣌ͱผͷ࣌ͷઃఆɻ( WP_Query Ͱ ։࠵ॱʹग़ྗ) • Ձ֨ɾαΠζɻ( WP_Query ͰɺՁ֨ॱɺαΠζॱͳͲͰͷιʔτ)
• ߘαϜωΠϧͷΑ͏ͳϞϊ͕ෳඞཁɻ(هࣄͷը૾ΛผϖʔδͰ ग़ྗ) • CSV Ͱͷσʔλͷೖɻ 15
ೖྗཝΛ࡞ΔͨΊ͚ͩͷΧε λϜϑΟʔϧυࢮΜ͕ͩɺ σʔλߏͱͯ͠ͷΧελϜ ϑΟʔϧυࠓޙΔ 16
17
ࠓ·Ͱ௨ΓͷΓํͰΧελϜϑΟʔϧυΛ੍ޚ͢ΔσϝϦοτ • ೖྗཝ͕ڱ͍ɻUIͱͯ͠ඍົʢεΫϩʔϧ͢Εݟ͑·͕͢ʣ • ΧελϜϑΟʔϧυͷσʔλΛϒϩοΫͰ༻͍Δ͜ͱ͕͠ ͍ɻʢΧελϜϑΟʔϧυɺهࣄΛอଘ͠ͳ͍ͱө͞Εͳ ͍ʣ 18
ղܾࡦΛߟ͑Δ • ϒϩοΫΤσΟλʔͷUXͱΧελϜϑΟʔϧυͷೖྗ͕γʔϜ ϨεԽ͞ΕΕྑ͍ɻ • ϒϩοΫΤσΟλʔଆ͔ΒΧελϜϑΟʔϧυΛૢ࡞͢Δ͜ͱ Λߟ͑Δɻ 19
Create Meta Block | Block Editor Handbook | WordPress Developer
Resources handbook ʹ͋ΔɺΧελϜϑΟʔϧυΛѻ͏ϒϩοΫͷνϡʔτ ϦΞϧɻ 20
import { registerBlockType } from '@wordpress/blocks'; import { TextControl }
from '@wordpress/components'; import { useSelect } from '@wordpress/data'; import { useEntityProp } from '@wordpress/core-data'; import { useBlockProps } from '@wordpress/block-editor'; registerBlockType( 'myguten/meta-block', { title: 'Meta Block', icon: 'smiley', category: 'text', edit( { setAttributes, attributes } ) { const blockProps = useBlockProps(); const postType = useSelect( ( select ) => select( 'core/editor' ).getCurrentPostType(), [] ); const [ meta, setMeta ] = useEntityProp( 'postType', postType, 'meta' ); const metaFieldValue = meta[ 'myguten_meta_block_field' ]; function updateMetaValue( newValue ) { setMeta( { ...meta, myguten_meta_block_field: newValue } ); } return ( <div { ...blockProps }> <TextControl label="Meta Block Field" value={ metaFieldValue } onChange={ updateMetaValue } /> </div> ); }, } ); 21
22
ϒϩοΫΛ࡞Δ࣌ʹߟྀ͢Δ͜ͱ • ctrl+c (cmd+c) ͷγϣʔτΧοτΩʔ͕ҙਤ௨Γʹಈ͔͘ʁ <RichText>Ͱೖ ྗཝΛ࡞Δͷ͕ϕλʔͬΆ͍ɻ • ϒϩοΫ͕ফ͑ͨͱ͖ʹΧελϜϑΟʔϧυͦͷ··Ͱ͍͍ͷ͔ʁ •
ϒϩοΫ͕ෳ࡞ΒΕͳ͍Α͏ʹɺ "supports": { "multiple": false } • save ͰΧελϜϑΟʔϧυͷΛऔΓग़͢͜ͱ͕ग़དྷͳ͍ͷͰɺΓ͍ͨ ߹ɺa0ributes ͱͯ͠ผʹఆٛ͢Δඞཁ͋Γɻ(αΠτݕࡧͰͷϢʔε έʔεʣ 23
αϯϓϧ 24
25
26
αϯϓϧͷ Githubɻ h"ps:/ /github.com/torounit/post-meta-block-example 27
՝ײ • ࠓͷͱ͜ΖɺϑΟʔϧυ͝ͱʹϒϩοΫΛ࡞ͨ͠ํ͕Αͦ͞ ͏ɻWordPress ͷ API ଆͰͷܕͷ੍͕ڧ͍ͷͰɺͳΜʹͰ ͑ΔϒϩοΫΈ͍ͨͳͷݫͦ͠͏ɻ • [type="email"],
[type="number"] ͷϑΟʔϧυΛ͏ͱͷί ϐʔ͕ग़དྷͳ͍ɻ(ϒϩοΫͷίʔυ͕ίϐʔ͞ΕΔ) • όϦσʔγϣϯʹ৭ʑ͕ඞཁɻ 28
·ͱΊ • ϒϩοΫΤσΟλʔɺΫϥγοΫΤσΟλʔͷTinyMCE๊͕͍͑ͯ ͨΛղܾ͕ͨ͠ɺͦΕҎ֎ͷ՝͍ͬͯΔɻ • ʮϒϩοΫΤσΟλʔଆ͔Β WordPress Λૢ࡞͢Δʯͱ͍͏ൃ͕େ ࣄɻJSྗɺReactྗΛʹ͚ͭΔͱվળͰ͖Δ͜ͱ͕େ෯ʹ૿͑Δɻ •
Gutenberg ɺhandbook ʹίϯτϦϏϡʔτ͢Δͱɺ͜͏͍ͬͨ ͕ࣝೖͬͯ͘Δɻษڧͷ࠷ͷಓͷΓɺιʔευΩϡϝϯςʔ γϣϯΛಡΜͰίϯτϦϏϡʔτ͢Δ͜ͱɻ 29