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)
ブロックテーマ時代における、テーマの CSS について考える Toro_Unit / 2025.09.13 @ Shinshu WordPress Meetup
torounit
0
180
ブロックテーマでサイトリニューアルした話 / Toro_Unit / 2025.04.12 @ Shinshu WordPress Meetup
torounit
1
230
Cloudflare Meetup Nagano Vol.3
torounit
1
110
僕が考える 「HTML サイトを WordPress にする」話 / 2023-11-05 Kansai WordPress Meetup
torounit
9
7.7k
Cloudflare Pages に入門してみた / 2023-10-14 Cloudflare Meetup Nagano Vol.2
torounit
2
1.9k
ブロックエディタをゴリゴリに使い倒してサイトを作った話 / Kansai WordPress Meetup 2023 09 23
torounit
15
10k
ブロックエディターカスタマイズことはじめ #wpshinshu / 2023-06-17 Shinshu WordPress Meetup vol.24
torounit
1
420
FSE時代におけるWEBサイト制作の研究 #wpshinshu / 2023-05-20 Shinshu WordPress Meetup vol.23
torounit
0
470
ブロックエディターを用いたWEBサイト開発とカスタムフィールドのあり方を考える。/ WordCamp Japan 2021
torounit
0
580
Other Decks in Programming
See All in Programming
Software Architecture
hschwentner
6
2.3k
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
190
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
530
私はどうやって技術力を上げたのか
yusukebe
43
18k
CSC305 Lecture 03
javiergs
PRO
0
240
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
270
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
32k
大規模アプリのDIフレームワーク刷新戦略 ~過去最大規模の並行開発を止めずにアプリ全体に導入するまで~
mot_techtalk
1
450
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
170
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
2
480
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
110
CSC509 Lecture 05
javiergs
PRO
0
300
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Faster Mobile Websites
deanohume
310
31k
Building Adaptive Systems
keathley
44
2.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
A designer walks into a library…
pauljervisheath
209
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
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