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
WordPressテーマ開発再入門 ~ Do you Know Customizer ~
Search
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
93
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
750
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
600
ブロックテーマとこれからの WordPress サイト制作 / nishinomiya.dev@2025-12-21
torounit
1
290
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
810
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
830
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
350
Cloudflare Meetup Nagano Vol.3
torounit
1
180
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
8.8k
Other Decks in Technology
See All in Technology
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
230
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
5
440
OPENLOGI Company Profile for engineer
hr01
1
74k
PHPで作って学ぶリアルタイム音声対話AIとWebSocket入門 by ムナカタ
munakata
0
140
ダッシュボード"開発"について 〜使われるダッシュボードのつくりかた〜
kimichan
0
200
キャリアLT会#3
beli68
2
250
Multicaで30個のミニプロジェクトをAIエージェント運用して見えてきたこと
eiei114
1
630
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
460
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
2
490
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
7
2.9k
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.1k
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
290
Featured
See All Featured
Music & Morning Musume
bryan
47
7.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The Limits of Empathy - UXLibs8
cassininazir
1
530
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
350
The World Runs on Bad Software
bkeepers
PRO
72
12k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
190
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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