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
プラグインやっちまった小咄集
Search
Toro_Unit (Hiroshi Urabe)
March 24, 2017
Programming
0
4.2k
プラグインやっちまった小咄集
WordBench東京 3月勉強会「WordPress プラグイン祭り」での登壇資料です。
Toro_Unit (Hiroshi Urabe)
March 24, 2017
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
200
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
ブロックテーマとこれからの WordPress サイト制作 / nishinomiya.dev@2025-12-21
torounit
1
250
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
770
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
640
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
290
Cloudflare Meetup Nagano Vol.3
torounit
1
150
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
7.9k
Cloudflare Pages に入門してみた / 2023-10-14 Cloudflare Meetup Nagano Vol.2
torounit
2
2.1k
Other Decks in Programming
See All in Programming
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.7k
CSC307 Lecture 07
javiergs
PRO
1
560
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
130
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
150
組織で育むオブザーバビリティ
ryota_hnk
0
180
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
180
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
CSC307 Lecture 09
javiergs
PRO
1
840
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Side Projects
sachag
455
43k
The World Runs on Bad Software
bkeepers
PRO
72
12k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
From π to Pie charts
rasagy
0
130
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
Transcript
ϓϥάΠϯͬͪ·ͬͨখᄉू ຊʹ͋ͬͨϓϥάΠϯͷڪ͍ Toro_Unit / 2017.03.24 @WordBench Tokyo. 1
ࢠᐌɺաࣕෆվɺੋҦաᛘ "ࢠᐌ͘ɺաͪͯվΊ͟ΔɺੋΛաͱҦ͏ɻ" ʰޠʱӴྶެ29 2
$ whoami ͜͡͠ΐ͏͔͍ 3
Toro_Unit ෦ ߛ (͏Β ͻΖ͠) 28͍͞ʹͳΓ·ͨ͠ ϑϦʔϥϯε Frontend Engineer /
Plugin Developer / Web Designer WordBench Nagano Moderator Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 4
ݝদຊࢢ͔Β͖·ͨ͠ɻ1 • WordBenchʹͥͻͲ͏ͧɻ • ࣍ճ 5/13ʢʣͰ͢ʂ • ొஃऀืूதͰ͢ʂ 1 https://commons.wikimedia.org/wiki/File:
130608_Matsumoto_Castle_Matsumoto_Nagano_pref_Japan02bs4.jpg Author: 663highland. License: CC BY 2.5 5
6
Plugins • Custom Post Type Permalinks • Simple Post Type
Permalinks • Responsive Slide • Other... Theme • Vanilla 7
8
WordCamp Kyoto 2017 • 2017.06.24 ~ 25 • ژେֶ ࠃࡍՊֶΠϊϕʔγϣϯ౩
9
Ξοϓσʔτͨ͠Βന͍ը໘ʹͳͬͨ ใࠂ͕͍ͬͺ͍དྷͨࣄ݅ɻ @Custom Post Type Permalinks 1.5.1 10
• ͋ΔͷਂϓϥάΠϯͷΞοϓσʔτΛߦ͏ɻ ͦͯ͠ཌேɾɾɾ 11
12
Why!!!!???? 13
• Travis CI Λར༻ͯ͠ɺPHPUnit ΛΒ͍ͤͯͨΓɺPHPͷจ ๏νΣοΧʔΛΒ͍ͤͯΔɻ • σϓϩΠΛࣗಈԽ͍ͯ͠ΔͷͰɺςετʹ߹֨͠ͳ͍ͱσϓ ϩΠग़དྷͳ͍Α͏ʹͳ͍ͬͯͨɻ 14
Why!!!!???? 15
ݪҼɻ 16
17
18
19
• PHPͷจ๏తʹɺOKɻ • खݩͷ։ൃڥͰಛʹແ͍ɻ • PHPUnit ͰΤϥʔʹͳΒͳ͍ͷͰɺݕग़Ͱ͖ͳ͔ͬͨɻ 20
༷ʑͳϨΠϠʔͰςετΛߦ͏͜ͱେࣄɻ • LintϚδେࣄɻ • PHPUnitᘳͰͳ͍͠ɺ༷ʑͳϨΠϠʔͰςετΛߦ͏ ͜ͱେࣄɻ • PHP_CodeSniffer and WordPress-Coding-Standards
ΛͱΓ ͋͑ͣೖΕΑ͏ɻ • ໘Ͱશ෦ରԠ͠Α͏ɻษڧʹͳΔࣄ݁ߏ͓͓͍Αɻ 21
@see όάΛͲͷΑ͏ʹݟ͚ͭΔ͔ // Speaker Deck 22
ͦͷ΄͔ͬͪ·ͬͨूɻ 23
҆қʹཁΛ΄͍΄͍࣮ 24
ʮ͜Μͳػೳ΄͍͠Ͱ͢ʂʯΛ҆қʹड͚ೖΕΔͱͭΒ͍ʂ 25
• ͕ࣗେͯ͠Θͳ͍ػೳͩͱݕূ͕͍͠ɻ • ʢͦͦԿΛݕূ͖͢ʁʣ • ຊʹదͳઃܭɾ࣮͕͍͠ɻ • ͳͷͰɺΒ͔͢έʔε͕ଟ͍ɻ • ޙʑ͍Ζ͍Ζෛ୲ʹͳΔ
26
͕ࣗओମతʹऔΓΊΔ͔Ͳ͏͔ʁ࣭Λอ্ͭͰେɻ • ͦΕΛ࣮͢ΔͷͰ͋Εɺ͕ࣗඞཁͩͱࢥ্ͬͨͰɻ • ཁΛग़͖ͯͨ͠ਓר͖ࠐΉͷେ͔ɻ 27
get_option( 'key' , default ); 28
͜ͷσϑΥϧτΛม͑ͨ͘ͳͬͨɻʢtrue -> falseʣ ͔͠͠ɺ ֘ͷ Option ͕ଘࡏ͍ͯ͠ͳ͍߹ɺΞοϓσʔτ Ͱڍಈ͕มΘͬͯ͠·͏ɻ ໓ۤࠔͬͨɻ 29
σϑΥϧτͷOptionΛget_optionͰߦ͏ͷෆຯ͍ɻ ͦͦऔಘ࣌ʹ͢Δ͜ͱʁ 30
add_option() Λ༻͍ͯɺDBʹอଘ͢͠ɻ 31
register_activation Ͱͷಈ࡞ڥͷݕূ 32
• ଠޑͰ༗໊ͳਓ੍͕࡞ͨ͠ϓϥάΠϯͰى͖ͨ൵ܶɻ • PHPͷόʔδϣϯ͕5.6ະຬͷڥͰɺϓϥάΠϯ͕ಈ࡞͠ ͳ͍Α͏ʹมߋ͞Ε͍ͯͨɻ • register_activation Ͱ༗ޮԽͰ͖ͳ͍Α͏ʹͳ͍ͬͯͨͷ Ͱɺແͦ͞͏͕ͩɾɾɾɾ 33
• ߋ৽࣌ʹɺregister_activation ൃՐ͠ͳ͍!!! • ͪͳΈʹੲ(3.1ະຬ)ͷ͜ΖൃՐ͍ͯͨ͠Β͍͠ɻ #14915 • PHP5.5ҎԼͷڥͰߋ৽ͨ͠߹ɺ༗ޮʹͳͬͨ··!!! 34
• register_activation ͚ͩͰෆेɻґଘ͢ΔϓϥάΠϯ͕ ͋Δ߹ɺͦΕ͕ఀࢭͨ͠߹ͳͲ͋Δɻ • admin_notices ͰɺΤϥʔৗʹදࣔ͢͠ɻ 35
ͦͦΞοϓσʔτͷݕग़ͭΒ͍ɻ 36
• WordPress ʹɺϓϥάΠϯͷΞοϓσʔτΛݕ͢ΔAPI ͕ಛʹଘࡏ͠ͳ͍ɻ • register_update_hook ఏҊ͞Ε͕ͨɺ࣮͞Εͳ͔ͬ ͨɻ#14912 • ϓϥάΠϯ࡞Δͱ͖ɺϓϥάΠϯͷόʔδϣϯΛ
Option ʹಥͬࠐΜͰ͓͘ͱʹཱͭ͜ͱ͋Δ͔͠Εͳ͍ɻ 37
Singleton ਏ͍ɻ 38
• WP-CLIͰϓϥάΠϯͷͻͳܗΛੜ͍ͯ͠Δ߹ɺϓϥά ΠϯͷϝΠϯͷϑΝΠϧࣗಈతʹinclude͞ΕΔɻ • ϓϥάΠϯ͕࣮ߦ͞Εͨঢ়ଶͰςετ͕͡·Δʂ • ςετ͕ͻ͡ΐʔʹ໘ͳίτʹͳΔɻ 39
ͦͷ Singleton ຊʹඞཁʁ ඞཁͳέʔε͋Δʹ͋Δͣɻ 40
• ͦͦɺϓϥάΠϯͷClassΛϢʔβʔ͕উखʹ͏Α͏ ͳέʔεΛఆ͢Δͷແҙຯɻ • ϢʔβʔαΠυͰɺϓϥάΠϯͷΠϯελϯεΛ৮Β͍ͤͨ Α͏ͳ߹ɺ૭ޱʹͳΔClassͱ͔Λ࡞ͬͨํ͕ྑ͍ɻ • ϢʔβʔଆͰ͜ͷϓϥάΠϯΛΧελϚΠζग़དྷΔΑ͏ʹ… ͬͯͷͦΕͦ͜ɺཁ͕དྷͨΒߟ͑Δ͜ͱɻ 41
Others • plugin_basename Λ͏ͱςετͰࠔΔ͜ͱ͕༗ͬͨΓ͢ Δɻʢςετ࣌ͷWordPressͷwp-contentͷதʹϓϥάΠϯ ͕ଘࡏ͍ͯ͠ͳ͍ͨΊʣ • ϓϥάΠϯҙ֎ʹ࡞Γखͱ͓͖ͯ͠߹͍͕ൃੜ͢Δͷ Ͱɺςετେࣄɻ͕ؔඇਪʹͳͬͨΓͷཧ༝Ͱॻ͖ ͑ΔࡍͳͲҙਤͤ͵όά͕ࠞೖ͢ΔՄೳੑɻ
• ҆қͳ༷มߋɺେࣄΩέϯɻ 42
͠ΜͲ͍ʂ 43
͚Ͳ... ֶͼଟ͍ɻ 44
• ϓϧϦΫΤετ, issue, ποίϛͳͲͰษڧʹͳΔࣄଟ͍ɻ • ʮςετͱ͔Ͳ͏ͯ͠ྑ͍͔ղΒͳ͍Ͱ͎͢ʢʼʻʣʯͱ͔ ݴ͏ͱɺϓϧϦΫ͕དྷͨΓɺϒϩάͷωλʹ͞ΕͨΓ͢Δɻ ϦϦʔε͠ͳ͍ͱɺϚαΧϦ͢ΒඈΜͰ͜ͳ͍ɻ 45
ࣗͰମݧͯͦ͜͠! 46
Let's Release Your Plugin!!! 47
Thanks! Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 48