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 Plugin 入門 #wpshinshu / 2019-06-22 Sh...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Toro_Unit (Hiroshi Urabe)
June 22, 2019
Technology
280
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WordPress Plugin 入門 #wpshinshu / 2019-06-22 Shinshu WordPress Meetup
Toro_Unit (Hiroshi Urabe)
June 22, 2019
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
910
ブロックテーマでサイトリニューアルした話 / 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
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
130
アリアドネの糸と、20年ごとの建て替え ── 長尾真『電子図書館』を、伊勢で読み直す / Rereading Makoto Nagao’s "Electronic Library" in Ise
ykiyota
0
120
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
140
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
100
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
190
リージョンの壁を越える、 ちょっと変わったAWSサービスの話
falken
PRO
1
290
こんなアーキテクチャ図は嫌だ BEYOND THE TIME: 半年後の自分へ贈る15のメッセージ / 15 of Anti-pattern in AWS Architecture Diagrams
naospon
3
290
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
440
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
370
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
200
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
130
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
580
Making the Leap to Tech Lead
cromwellryan
135
10k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
The Invisible Side of Design
smashingmag
301
52k
The Curious Case for Waylosing
cassininazir
1
500
Amusing Abliteration
ianozsvald
1
290
It's Worth the Effort
3n
188
29k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
GraphQLとの向き合い方2022年版
quramy
50
15k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Transcript
WordPress Plugin ೖ Toro_Unit @Shinshu WP Meetup vol.13 1
$ whoami 2
Toro_Unit ෦ ߛ (͏Β ͻΖ͠) • Frontend Engineer • WordPress
Plugin and Theme Developer Github: @torounit Twitter: @Toro_Unit 3
Contribution • WordPress 4.3 / 4.4 / 4.7 / 5.0
/ 5.1 / 5.2 • WordCamp Osaka 2019 • WordCamp Osaka 2018 Speaker. • etc... 4
Plugins and Themes • Custom Post Type Permalinks • Advanced
Posts Blocks • Simple Post Type Permalinks • Powerful Posts Per Page (PPPP) • Vanilla • and more... 5
Question. 6
Theme ࡞ͬͨ͜ͱ͋Δਓ 7
Plugin ࡞ͬͨ͜ͱ͋Δਓ 8
ͦͦ ϓϥάΠϯͱԿͳͷ͔ɻ 9
• WordPress Λ֦ு͢ΔػೳɻσϑΥϧτʹແ͍ػೳΛՃ͠ ͨΓɺಈ࡞Λվมͨ͠Γ͢Δɻ • wp-settings.php ͰಡΈࠐ·ΕΔɻ • PHPͷεΫϦϓτɻ͔ͦ͜ΒCSSͱ͔JSͱ͔ΛಡΈࠐΜͩΓ ͢Δ͜ͱɻ
10
foreach ( wp_get_active_and_valid_plugins() as $plugin ) { wp_register_plugin_realpath( $plugin );
include_once( $plugin ); /** * Fires once a single activated plugin has loaded. * * @since 5.1.0 * * @param string $plugin Full path to the plugin's main file. */ do_action( 'plugin_loaded', $plugin ); } 11
wp-content/plugins ͷதʹɺ • hogehoge.php • hogehoge/hugahuga.php ͳͲͷϑΝΠϧΛ࡞͠ɺઌ಄ʹίϝϯτΛॻ͚ϓϥάΠ ϯɻ <?php /**
* Plugin Name: Your Plugin */ 12
ΞΫγϣϯϑοΫɺϑΟϧλʔϑοΫ • WordPress ͷಛఆͷಈ࡞Λվม͢ΔͨΊͷػೳɻ 13
add_action ಛఆͷՕॴʹಈ࡞ΛՃ͢Δɻ // ϓϥάΠϯͷελΠϧγʔτΛొ function add_reading_minutes_styles() { wp_enqueue_style( 'plugin-hans-on-sample', plugin_dir_url(
__FILE__ ) . 'style.css' ); } // ΞΫγϣϯϑοΫΛొ add_action( 'wp_enqueue_scripts', 'add_reading_minutes_styles' ); 14
add_filter ಛఆͷՕॴʹಈ࡞Λվม͢Δɻ //ຊจͷલʹ͜ͷهࣄnͰಡΊ·͢Λදࣔɻ function add_reading_minutes_to_the_content( $content ) { $minutes =
count_reading_minutes( $content ); $text = sprintf( '͜ͷهࣄ%dͰಡΊ·͢ɻ', $minutes ); $before = '<span class="reading-minutes">' . esc_html( $text ) . '</span>'; return $before . $content; } //ϑΟϧλʔϑοΫΛొ add_filter( 'the_content', 'add_reading_minutes_to_the_content' ); 15
ࡶͳͨͱ͑ ࡶͳΧϨʔͷ࡞Γํ 1. ࡐྉΛ༻ҙ͢Δ: [ܲɺδϟΨΠϞɺʹΜ͡ΜɺλϚωΪ] 2. ࡐྉΛΔ 3. ᖱΊΔ 4.
ࣽΔ 5. ௐຯྉ(ϧ)ΛೖΕΔ 16
ΧϨʔͪΌΜͱΞΫΛऔͬͨํ͕ඒຯ͍ɻ ΞΫΛऔΓ·͘ΔΧϨʔVSҰऔΒͳ͍ΧϨʔ :: σΠϦʔϙʔ λϧZ 17
1. ࡐྉΛ༻ҙ͢Δ: [ܲɺδϟΨΠϞɺʹΜ͡ΜɺλϚωΪ] 2. ࡐྉΛΔ 3. ᖱΊΔ 4. ࣽΔ 5.
ΞΫΛऔΔ!!! 6. ௐຯྉ(ϧ)ΛೖΕΔ 18
ࡶͳϨγϐΛ PHP Ͱॻ͍ͯΈΔɻ $zairyo = [ 'ܲ', 'δϟΨΠϞ', 'ʹΜ͡Μ', 'λϚωΪ'
]; $zairyo = apply_filters( 'zairyo', $zairyo ); $cook->cut( $zairyo ); do_action( 'before_boil', $cook ); $cook->boil(); do_action( 'after_boiled', $cook ); $seasoning = apply_filters( 'seasoning', [ 'ΧϨʔϧ' ] ); $cook->add_seasoning( $seasoning ); 19
ΞΫΛऔΔ add_action( 'after_boiled', 'remove_aku' ); function remove_aku( $cook ) {
$cook->remove_aku(); } 20
1. ࡐྉΛ༻ҙ͢Δ: [ܲɺδϟΨΠϞɺʹΜ͡ΜɺλϚωΪ] 2. ࡐྉΛΔ 3. ᖱΊΔ 4. ࣽΔ 5.
ΞΫΛऔΔ!!! 6. ௐຯྉ(ϧ)ΛೖΕΔ 21
ϏʔϑΧϨʔʹม͑Δ add_filter( 'zairyo', 'beef_curry_zairyo' ); function beef_curry_zairyo( $zairyo ) {
return array_replace( $zairyo, [ 0 => 'ڇ'] ); } 22
1. ࡐྉΛ༻ҙ͢Δ: [ ڇ!! ɺδϟΨΠϞɺʹΜ͡ΜɺλϚωΪ] 2. ࡐྉΛΔ 3. ᖱΊΔ 4.
ࣽΔ 5. ௐຯྉ(ϧ)ΛೖΕΔ 23
͡Ό͕ʹม͑Δ add_filter( 'zairyo', function() { return ['ಲ', 'δϟΨΠϞ', 'ʹΜ͡Μ', '͠Β͖ͨ',
'λϚωΪ' ]; }); add_filter( 'seasoning', function() { return [ '͠ΐ͏Ώ', 'ΈΓΜ', '࠭' ]; }); add_action( 'before_boil', function( $cook ) { $cook->make_dashi('અ'); }); add_action( 'after_boiled', function( $cook ) { $cook->remove_aku(); $cook->set_otoshibuta(); }); 24
1. ࡐྉΛ༻ҙ͢Δ: [ಲɺδϟΨΠϞɺʹΜ͡Μɺ͠Β͖ͨɺλϚωΪ] 2. ࡐྉΛΔ 3. ᖱΊΔ 4. μγΛऔΔ 5.
ࣽΔ 6. փोΛऔΔ 7. མͱ֖͠ 8. ௐຯྉ(ে༉ɺΈΓΜɺ࠭)ΛೖΕΔ 25
ϑοΫͷ୳͠ํ Codex ΛݟΔ • ϓϥάΠϯ API/ΞΫγϣϯϑοΫҰཡ - WordPress Codex
ຊޠ൛ 26
27
• Code reference https://developer.wordpress.org/reference/ɹ Ͱ͕͢͞ɻ • ιʔεΛಡΉɻ • ϑΟϧλʔϑοΫϚδͰଟ͗͢ΔͷͰɺͦͷ୳ͯ͠ Δɻ͜ͷؔͱ͔ςϯϓϨʔτλάͲ͏ʹ͔ͳΒͳ͍͔
ͳʔͬͯײ͡ͰιʔεΛͦͷՕॴ͚ͩಡΉͱɺେɺ do_action, apply_filter ͕ݟ͔ͭΔɻ 28
Α͘͏ action • after_setup_theme: ςʔϚͷઃఆ͕ऴΘͬͨޙ • init : WordPress ͷॳظઃఆͳͲ͕ऴΘͬͨޙ
• admin_init : ཧը໘ͰͷॳظઃఆͳͲ͕ऴΘͬͨޙ • wp_enqueue_scripts : CSS ͱ͔ JS Λొ͢Δͱ͖ • pre_get_posts: ߘͷσʔλΛऔಘ͢Δલ 29
Α͘͏ filter • body_class: body_class() Ͱग़ྗ͞ΕΔ class Λվมɻ • get_the_archive_title:
ҰཡϖʔδͰͷλΠτϧɺ the_archive_title() ͷςΩετΛมߋɻ ͋Μ·Γͳ͍ɻͦͷඞཁʹԠͯ͡ɻɻɻ 30
functions.php ͱͳʹ͕͕ͪ͏ͷ͔ • ಡΈࠐ·ΕΔλΠϛϯά͕ҧ͏ɻϓϥάΠϯͷ100ߦԼ͘Β͍Ͱಡ Έࠐ·ΕΔɻ • ͦΕҎ֎ʹҧ͍ಛʹͳ͍ɻfunctions.php ͰՄೳͳ͜ͱશͯϓϥ άΠϯͰ࣮ݱͰ͖Δɻ foreach
( wp_get_active_and_valid_themes() as $theme ) { if ( file_exists( $theme . '/functions.php' ) ) { include $theme . '/functions.php'; } } 31
• άάΔͱ functions.php ʹɾɾɾΈ͍ͨͳهࣄ͕ࢁ΄Ͳग़ͯ ͘Δ͕ɺ΄΅શͯϓϥάΠϯͰಈ͘ɻ 32
ԿނϓϥάΠϯʁςʔϚͰಉ͜͡ͱ͕Ͱ͖Δͳ Βผʹྑ͘ͳ͍ʁ • ͪ·ͨͰଟػೳΛചΓʹͯ͠ΔςʔϚଟ͍Ͱ͕͢ɻɻɻ 33
ςʔϚʹػೳΛؚΊΔ͜ͱͷ • ςʔϚαΠτͷݟͨΛఆٛ͢ΔϞϊɻػೳΛؚΊΔͷ Ͱແ͍ɻ • ݟͨΛม͍͑ͨʂͱ͍͏ͱ͖ʹɺػೳ͕ࢮ͵ͷͰม͑ΒΕ ͳ͍ͳͲͷɻ • ଞͷϞϊͰରԠ͍ͨ͠ػೳΛOFFʹͰ͖ͳ͍ɻ 34
ϓϥάΠϯςϦτϦʔ Plugin Territory • ΞΫηεղੳ • SEO ͷͨΊͷػೳ • ͓͍߹ΘͤϑΥʔϜ
• ΧελϜߘλΠϓ • ΧελϜϒϩοΫɾγϣʔτίʔυ • etc.... 35
ʮϦχϡʔΞϧςʔϚͷมߋͰͿͬ ͱΜͩΒࠔΔͷϓϥάΠϯʯ Plugin Territory – WordPressͷͦͷॲཧςʔϚͰΔ͖͔ϓϥάΠϯͰΔ͖͔ʁ | Firegoby 36
ͲΜͳ;͏ʹࣄͰͬͯΔ͔ • Ҋ݅Ͱ࡞Δͱ͖ɺػೳ͝ͱʹผͷϓϥάΠϯʹׂ͍ͯ͠ Δɻ • 5ߦͷίʔυͱ͔Ͱɻ • γϯϓϧͳػೳ͍ճ͕͠ޮ͖͍͢͠ཧղ͍͢͠ɻ • functions.php
͕ _sʢελʔλʔςʔϚʣ ͦͷ··ͱ͍͏ ߹ଟ͍ɻ 37
Thanks! Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 38