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 Plugin 入門 #wpshinshu / 2019-06-22 Sh...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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 でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
700
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
590
ブロックテーマとこれからの WordPress サイト制作 / nishinomiya.dev@2025-12-21
torounit
1
280
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
810
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
790
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
340
Cloudflare Meetup Nagano Vol.3
torounit
1
170
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
8.8k
Cloudflare Pages に入門してみた / 2023-10-14 Cloudflare Meetup Nagano Vol.2
torounit
2
2.3k
Other Decks in Technology
See All in Technology
20260619 私の日常業務での生成 AI 活用
masaruogura
1
230
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
250
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
AIチャット検索改善の3週間
kworkdev
PRO
2
150
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
280
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
250
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
320
Kiro Ambassador を目指す話
k_adachi_01
0
110
徹底討論!ECS vs EKS!
daitak
3
1.1k
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
160
フィジカル版Github Onshapeの紹介
shiba_8ro
0
300
人材育成分科会.pdf
_awache
4
300
Featured
See All Featured
It's Worth the Effort
3n
188
29k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Deep Space Network (abreviated)
tonyrice
0
210
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
How STYLIGHT went responsive
nonsquared
100
6.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
WCS-LA-2024
lcolladotor
0
650
The Limits of Empathy - UXLibs8
cassininazir
1
360
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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