Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
WordPressテーマ開発再入門 ~ Do you Know Customizer ~
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Toro_Unit (Hiroshi Urabe)
January 13, 2018
Technology
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WordPressテーマ開発再入門 ~ Do you Know Customizer ~
WordBench Nagoya 登壇資料です。
Toro_Unit (Hiroshi Urabe)
January 13, 2018
More Decks by Toro_Unit (Hiroshi Urabe)
See All by Toro_Unit (Hiroshi Urabe)
WordPress のサイト制作について改めて考える Toro_Unit / 2026.07.25 @ Shinshu WordPress Meetup
torounit
0
200
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
800
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
630
ブロックテーマとこれからの WordPress サイト制作 / nishinomiya.dev@2025-12-21
torounit
1
300
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
830
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
930
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
370
Cloudflare Meetup Nagano Vol.3
torounit
1
190
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
8.9k
Other Decks in Technology
See All in Technology
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
220
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
240
SREは、MCPとAutopilotをこう使え!
kazumax55
3
910
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.7k
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
Reactの設計論
uhyo
24
14k
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
5
520
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
30
17k
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
180
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
870
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
370
技術的負債から考える、AI時代のエンジニアリング投資 — ビズリーチの技術的負債と向き合った経験から、変更し続けられるソフトウェアを考える/ technical-debt-con2026
visional_engineering_and_design
4
3.3k
Featured
See All Featured
Everyday Curiosity
cassininazir
0
320
Code Reviewing Like a Champion
maltzj
528
40k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Building the Perfect Custom Keyboard
takai
2
880
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
WENDY [Excerpt]
tessaabrams
14
39k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
WordPressςʔϚ։ൃ࠶ೖ Do you Know Customizer? Toro_Unit @2018.01.13 / WordBench Nagoya
1
Toro_Unit ෦ ߛ (͏Β ͻΖ͠) HAMWORKS • Frontend Engineer •
Plugin and Theme Developer Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 2
ࡳຈͷձࣾͰϦϞʔτϫʔΫͯ͠·͢ 3
4
5
6
Plugins and Themes • Custom Post Type Permalinks • Simple
Post Type Permalinks • Powerful Posts Per Page (PPPP) • Responsive Slide • Vanilla • and more... 7
Contribution • WordBench ϞσϨʔλʔ • WordCamp Kyoto 2017 ࣮ߦҕһ
• WordCamp Tokyo 2017 Speaker • WordBench.org • VCCW Team • etc... 8
ݝদຊࢢ͔Β͖·ͨ͠ɻ1 • ϫΠϯ͓͍͍͠Αɻ • ͦΖͦΖڶഴ͓͍͍͠Αɻ 1 https://commons.wikimedia.org/wiki/File: 130608_Matsumoto_Castle_Matsumoto_Nagano_pref_Japan02bs4.jpg Author: 663highland.
License: CC BY 2.5 9
10
WordBench Nagano Special 2018!!! • 2/3 দຊͲ͏ͧɻ • 1/20 Δ͔ΒͲ͏ͧɻ
11
Agenda 1. WordFes ͷ෮शɻ 2. Customizer ͱ 3. UX ΛߴΊΔͨΊʹɻ
1. Selective Refresh 2. JavaScript API 12
0. WordFes ͷ෮शɻ 13
WordPress.org ςʔϚσΟ ϨΫτϦܝࡌςʔϚ ͱʁ • https://wordpress.org/themes/ • WordPress ͷཧը໘͔ΒΠϯε τʔϧɾߋ৽͕ग़དྷΔςʔϚୡɻ
• ςʔϚϨϏϡʔΛ௨ա͠ͳ͍ͱܝࡌ Ͱ͖ͳ͍ɻ 14
ςʔϚͷ࡞Γํɻ ެࣜͷυΩϡϝϯςʔγϣϯɻࠓͷͱ͜ Ζӳޠ͔͠ແ͍͚ͲɺίʔυͰͷղઆ ଟ͍ͷͰҙ֎ʹͳΜͱ͔ͳΔɻ • Theme Developer Handbook • https://developer.wordpress.org/
themes/ 15
ςʔϚϨϏϡʔΛ௨Βͳ͍͜ͱɻ • ΤεέʔϓͳͲ͕͞Ε͍ͯͳ͍ɻ੬ऑੑ͕༗ΔϞϊɻ • ϓϥάΠϯςϦτϦʔͷػೳɺϓϥάΠϯͰରԠ͢Δ͖ػ ೳ͕͍ͬͯΔϞϊɻ ༷ʑͳ͖·Γ͕͋Δɻ 16
Required – Theme Review Team • https://make.wordpress.org/themes/handbook/review/ required/ • ຊޠ༁
https://mirucon.github.io/required-ja/ 17
ϓϥάΠϯςϦτϦʔ • https://make.wordpress.org/themes/handbook/review/ required/explanations-and-examples/#plugin-territorys σβΠϯʹؔ࿈͠ͳ͍ػೳΛςʔϚʹؚΊ͍͚ͯͳ͍ɻ 18
ྫ • Analytics·ͨτϥοΩϯάͷαϙʔτ • SEOΦϓγϣϯ • ͓͍߹ΘͤϑΥʔϜ • ඇσβΠϯؔ࿈ͷϝλϘοΫε •
ϦιʔεΩϟογϯά • ཧྖҬͷμογϡϘʔυΟδΣοτ • ΧελϜߘλΠϓͱγϣʔτίʔυ • ιʔγϟϧϝσΟΞͷʮ͖ʯɺʮϑΥϩʔʯɺʮڞ༗ʯϘλϯ 19
Theme Unit Test ςʔϚϢχοτςετ - WordPress Codex ຊޠ൛ WYSIWYG ΤσΟλͰී௨ʹهࣄΛॻ͍ͨ
Βී௨ʹදࣔ͞ΕΔΑ͏ʹͪΌΜͱCSSΛ ॻ͘ɻ • ճΓࠐΈΩϟϓγϣϯ͖ը૾ɺΪϟ ϥϦʔ݁ߏΕ͕ͪɻ • ී௨ͷHTML͕classΛ͚ͣʹɺͪΌ Μͱදࣔग़དྷΕɺςʔϚΛม͑ͯ ͪΌΜͱදࣔͰ͖Δͣɻ 20
WordPressͰग़དྷΔ͜ͱΛͪΌΜͱग़དྷΔΑ͏ʹͭ͘Ζ͏ɻ • WordPressʹඪ४ࡌ͞Ε͍ͯΔͷ͕ͪΌΜͱಈ͘Α͏ʹ ͢Δɻ • υΩϡϝϯςʔγϣϯɺαϙʔτͷίετ͕ݮΔɻ • ຊʹग़དྷΔͬͯॻ͍ͯ͋ΔͷʹɾɾɾͬͯͳΔͷɺ ͍ͮΒ͞ͱγεςϜͷෆ৴ײΛੜΉɻ 21
Theme Check Theme Check — WordPress Plugins 22
νΣοΫ߲ • ίʔσΟϯάϧʔϧ • ΤεέʔϓɾαχλΠζ͞Ε͍ͯͳ͍ • ඇਪͳؔɾςϯϓϨʔτλά • ඞਢͷ class
ͷଘࡏɻ • etc... 23
ͦ͏͍ͬͯҊ݅Ͱ ༷ʑͳཁٻ͕ɻ 24
ཧը໘͔Β͍Ζ͍Ζม ߋग़དྷΔΑ͏ʹ͍ͨ͠ɻ 25
Contents 1. WordFes ͷ෮शɻ 2. Customizer ͱ 3. UX ΛߴΊΔͨΊʹɻ
26
ࠓͷຊɻ 27
1. Customizer API 28
29
The Customize API Theme Options – The Customize API |
Theme Developer Handbook | WordPress Developer Resources • ΧελϚΠβʔʹઃఆΛՃ͢ΔͨΊͷAPI. • WordPress 3.4 ͰՃ͞Εͨػೳɻ • WordPress 4.5 ͰSelective Reflesh͕Ճɻ • WordPress 4.9 Ͱ༧ެ։ͳͲɺߋʹڧԽ͞ΕΔɻ 30
࣮ 31
function my_customize_register( WP_Customize_Manager $wp_customize ) { //ηΫγϣϯͷՃ $wp_customize->add_section( 'jumbotron', array(
'title' => 'jumbotron', ) ); //ઃఆͷΦϓγϣϯ $wp_customize->add_setting( 'jumbotron_title', array( 'default' => 'Hello World!', 'sanitize_callback' => 'esc_html', )); // ϑΥʔϜͷՃ $wp_customize->add_control( 'jumbotron_title', array( 'section' => 'jumbotron', 'label' => 'Jumbotron Title', )); } add_action( 'customize_register', 'my_customize_register' ); 32
33
34
ςϯϓϨʔτͰͷදࣔ <h1> <?php echo esc_html( get_theme_mod( 'jumbotron_title' ) ); ?>
</h1> 35
͜Μ͚ͩʂ ΧελϜϑΟʔϧυΑΓ؆୯͡Όͳ͍Ͱ͔͢ʁ 36
DEMO torounit/customizer-demo 37
࣮ग़དྷΔϑΟʔϧυͷλΠϓ • ςΩετϑΟʔϧυ(σϑΥϧτ) • νΣοΫϘοΫε (checkbox) • ϥδΦϘλϯ (radio) •
ηϨΫτϘοΫε (select) • ςΩετϘλϯ (textarea) • ݻఆϖʔδ (doropdown-pages) 38
39
$wp_customize->add_control( 'sample_radio', array( 'label' => 'Radio', 'section' => 'sample', 'type'
=> 'radio', 'choices' => array( 'option1' => 'Option 1', 'option2' => 'Option 2', ), ) ); $wp_customize->add_setting( 'sample_select', array( 'sanitize_callback' => 'esc_html', 'default' => 'option1', ) ); 40
type ʹ ͜ΕҎ֎ͷΛ͢ͱɺinputλάͷtypeଐੑ͕ઃఆ ͞ΕΔɻ $wp_customize->add_setting( 'sample_date', array( 'sanitize_callback' => 'esc_html',
'default' => '2018-01-31', ) ); $wp_customize->add_control( 'sample_date', array( 'label' => 'Date', 'section' => 'sample', 'type' => 'date', ) ); 41
add_control ʹɺ WP_Customize_Control ͷαϒΫϥ εΛͯ͠ɺߋʹ֦ுՄೳɻ 42
built-inͷ WP_Customize_Control ͷαϒΫϥεྫɻ • WP_Customize_Upload_Control • WP_Customize_Image_Control • WP_Customize_Cropped_Image_Control •
WP_Customize_Color_Control • WP_Customize_Date_Time_Control • WP_Customize_Code_Editor_Control 43
44
WP_Customize_Control Λܧঝͨ͠ΫϥεΛࣗ࡞͢Εɺࣗ ͳΓͷϑΟʔϧυΛఆٛग़དྷΔɻ 45
• Twentysevnteen ͷτοϓϖʔδͷΧελϚΠζ ΧελϚ ΠβʔͰͷ࣮ɻ • Lightning • s56bouya/nishiki: WordPress
theme Nishiki. • Snow Monkey – 100%GPL ͷϝσΟΞ/ϒϩά͚ WordPress ༗ྉςʔϚ 46
• ΧελϜϑΟʔϧυ/Option ϖʔδͳͲͰ͍ͬͯͨͷ͕ ͋ΔఔΧελϚΠβʔʹҠߦ͢ΔͷͰɻ • ϓϨϏϡʔͰݟͳ͕Β࿔ΕΔͬͯͷΓڧ͍ɻ 47
Contents 1. WordFes ͷ෮शɻ 2. Customizer ͱ 3. UX ΛߴΊΔͨΊʹɻ
48
2. UX ΛߴΊΔɻ 49
Customizer ͷ • ϓϨϏϡʔͷiframeΛؙ͝ͱߋ৽͢ΔͷͰ͍ɻ • ઃఆΛ͙͢ʹ͍ͬͨ͡Γ͢ΔͱϓϨϏϡʔʹग़ͳ͍͜ͱ ɻ 50
2-1. Selective Refresh 51
Selective Refresh ͱ • Ajax Λͬͯ෦తʹHTMLΛߋ ৽ɻ • Selective Refresh
in the Customizer – Make WordPress Core • ԖචͷϚʔΫ͕ग़Δͷ͕ҹɻ 52
function my_jumbotron_lead() { echo get_theme_mod( 'jumbotron_lead' ); } function my_customize_register(
WP_Customize_Manager $wp_customize ) { $wp_customize->add_setting( 'jumbotron_lead', array( 'sanitize_callback' => 'esc_html', 'transport' => 'postMessage', // JSͰߋ৽͢ΔΑ͏ʹɻ ) ); $wp_customize->add_control( 'jumbotron_lead', array( 'section' => 'jumbotron', )); //Selective Refresh $wp_customize->selective_refresh->add_partial( 'jumbotron_lead', array( 'selector' => '.jumbotron .lead', 'render_callback' => 'my_jumbotron_lead', //ςϯϓϨʔτλάΛࢦఆɻ ) ); } add_action( 'customize_register', 'my_customize_register' ); 53
෦తʹHTML͕ஔ͖ΘΔɻ • render_callback ʹࢦఆ͢ΔؔΛɺͪΌΜͱઃܭ͢Εɺ ςϯϓϨʔτλάͱͯ͠͏͜ͱग़དྷΔɻ 54
2-2. JavaScript API 55
JavaScript Ͱૢ࡞Մೳɻ 56
function my_customize_preview_js() { wp_enqueue_script( 'my-customize-preview', get_template_directory_uri() . '/customize-preview.js', array( 'customize-preview'
), false, true ); } add_action( 'customize_preview_init', 'my_customize_preview_js' ); 57
ྫɿJavaScriptͰૢ࡞ͯ͠ɺߋʹߴʹɻ (function( $ ) { wp.customize( 'jumbotron_lead', function( value )
{ value.bind( function( to ) { $( '.jumbotron .lead' ).text( to ); } ); } ); })( jQuery ); 58
JavaScript API Λ͏͖έʔε • Selective Refresh ͕ਏ͍ɻ • ଐੑͳͲɺHTMLΛͦͷ··ஔ͖͑ΔΘ͚Ͱແ͍έʔε. •
Selective Refresh ͚ͩͩͱਏ͍ɻ • ίϯςϯπεϥΠμʔͳͲ͕ೖ͍ͬͯΔέʔεɻ • JSͷঢ়ଶΛ࠶ߋ৽ɺ࠶ॳظԽͳͲ͕ඞཁͳέʔεɻ • DRY ͳײ͡ͰJSΛॻ͘ʹ͍Ζ͍Ζࢼߦࡨޡ͕ඞཁɻ 59
JS ͰؤுΕ͍Ζ͍Ζग़དྷΔɻ • ΊͬͪΌେม͚ͩͲɾɾɾɻ 60
͍Ͳ͜Ζྫɻ 61
DEMO torounit/fesdemo ίϯςϯπεϥΠμʔΛςʔϚΧελϚΠβʔͰมߋग़དྷΔΑ͏ ʹɻ 62
• Twentysevnteen Selective Refresh ʹରԠɻ 63
݁ߏେมɻ • ಘʹ Serective Refresh JavaScript Λ৮Γग़͢ͱେมɻ • ͪΌΜͱ࡞ͬͨϞϊΛίϯϙʔωϯτతʹ͍ճ͢ͷ͕ϕ
λʔɻ • ΧελϚΠβʔ൛ͷACFΈ͍ͨͳϠπ͕ग़Δؾ͢Δɻ • ࠓ͕νϟϯε͔͠Εͳ͍ɻ 64
WordPress ͕ࡢྗΛೖΕͨϙΠϯτͷͻͱͭɻ • Gutenberg ͦ͏͚ͩͲɺWordPressͷUX͕େ͖͘มΘΖ͏ͱ ͍ͯ͠Δɻ • ϏδϡΞϧͰΈͨ··࿔ΕΔͷͭΑ͍ɻ • Ϣʔβʔ͕ΧελϚΠβʔΛ৮Δػձ૿͑Δͣɻ
• ṖͷઃఆϖʔδΛ࡞ͬͨΓɺṖͷΧελϜϑΟʔϧυΛ࡞ͬͯ ͍ΔͱɺʮσϑΥϧτςʔϚͱ͔ͳΒͰ͖Δͷʹɾɾɾʯͬ ͯͳΔͦ͏ԕ͘ͳ͍ʁ 65
WordPress ͷϢʔβʔͷϑΥʔΧεྑ͞ͷ ͻͱͭɻ దࡐదॴͰɺWordPressͷඒຯ͠͞ΛҾ͖ग़͢Α͏ͳઃܭ͕େ ࣄʹͳΔؾ͢Δɻʢئ͔͠Εͳ͍ʣ ͱΓ͋͑ͣWEBαΠτΛͱ͍͏બࢶ͕૿͖͑ͯͨҎ্ɺΘ͟ Θ͟WordPressΛબͿཧ༝ɺΧελϚΠζੑͱ͔ॊೈੑͩͬ ͨΓɻཁٻεΩϧͱWordPressͷཧղߴ·ΔͷͰʁ 66
·ͱΊɻ • ·ͣຊମͷػೳΛͪΌΜͱ͍ͦ͏ɻ • ͍͍ͩͨͷ͜ͱɺTheme Developer Handbook ʹࡌͬͯ ΔͷͰɺಡ͏ɻ •
ಡॻձͱ͔ʹͨ͠Βָ͍͠Μ͡Όແ͍Ͱ͠ΐ͏͔ʁ • _s σϑΥϧτςʔϚ ( Twenty γϦʔζ ) ΛಡΉͱ͍Ζ͍Ζ ൃݟ͕ଟ͍ɻTheme Development Examples 67
Thanks! Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 68