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ローカル開発環境をつくろう — WP-CLI + Composer —
Search
Takashi Kitajima
March 06, 2017
Programming
3.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WordPressローカル開発環境をつくろう — WP-CLI + Composer —
Takashi Kitajima
March 06, 2017
More Decks by Takashi Kitajima
See All by Takashi Kitajima
「ブロックテーマでは再現できない」は本当か?
inc2734
0
1.6k
Snow Monkey&unitone から見た WordPress エディターの変遷
inc2734
0
220
Snow Monkey CM
inc2734
0
130
メンテナンス性を考慮した CSS 設計
inc2734
0
400
Snow Monkey とは
inc2734
0
1.4k
WordPress_テーマのつくりかた.pdf
inc2734
4
620
受託開発者だった僕が WordPress の有料テーマ開発者になって学んだこと
inc2734
1
1.1k
Snow Monkey(WordPress) による web コンテンツ制作の新しいカタチ【ビジネスパーソン向け】
inc2734
0
130
Snow Monkey とコミュニティ
inc2734
0
730
Other Decks in Programming
See All in Programming
sbt 2.0: takeoff
eed3si9n
0
150
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
Are APIs Still Relevant in the AI Era?
soyuka
0
460
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
410
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
170
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
590
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
210
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
110
contenteditable と日本語入力に向き合う
colorful12
0
190
パスワード再設定メールのURLについて知っておこう
uyuki234
0
150
すこし踏み込む CancellationToken
htkym
2
1.7k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
The Curse of the Amulet
leimatthew05
3
15k
A better future with KSS
kneath
240
18k
It's Worth the Effort
3n
188
29k
Producing Creativity
orderedlist
PRO
348
41k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Transcript
8PSE1SFTTϩʔΧϧ։ൃڥΛͭ͘Ζ͏ 81$-* $PNQPTFS ͪͺͳɻ
ΩλδϚλΧγ !JOD ϑϦʔϥϯε ʙ 8FCσβΠφʔϓϩάϥϚʔ 8PSE1SFTTϓϥάΠϯ
.881'PSNɺ4NBSU$VTUPN'JFMETʜ 8PSE1SFTTςʔϚ )BCBLJSJɺ.JNJ[VLVʜ 4BTT4UZMVT$44ϑϨʔϜϫʔΫ #BTJT
8PSE1SFTTίϛϡχςΟͱͷؔΘΓ 8PSE#FODI࡚ϞσϨʔλʔ 8PSE$BNQ5PLZP-5 8PSE$BNQ,BOTBJ࣮ߦҕһϋϯζΦϯ 8PSE$BNQ,BOTBJ࣮ߦҕһεϐʔΧʔ
8PSE$BNQ5PLZPεϐʔΧʔ FUD
ϩʔΧϧ։ൃڥ͕ͳ͍ͱʜ w ϩʔΧϧ։ൃڥʜαʔόʔ্Ͱͳࣗ͘ͷϚγϯͷ தʹ͋Δ։ൃ༻ͷڥͷ͜ͱ w ຖճຖճ͍͍ͪͪ'51ͰϑΝΠϧΛαʔόʔʹ্͛ͨΓ %#ͷΤΫεϙʔτΠϯϙʔτΛͯ֬͠ೝ͢Δͷ࣌ؒ ͷແବ w αʔόʔͷϑΝΠϧΛૢ࡞͢Δʹͯ͠ෳਓͰಉ
࣌ʹ৮ΔͱઌฦΓͷةݥੑ͕ʜ
ͳͥϩʔΧϧ։ൃڥΛ͏ͷ͔ w ϩʔΧϧʹ։ൃڥ͕͋Ε͙͢ʹಈ࡞֬ೝͰ͖Δ w ݱʹ(JU͕͋ΔͷͰෳਓͰ࡞ۀͨ͠ͷΛϚʔδ ͯ͠αʔόʔ্ʹө͢Δͷ؆୯
None
.".19".11 w 8FC੍࡞ʹ͓͚ΔҰൠతͳϩʔΧϧ։ൃڥͱ͍͑ .".19".11 w 8PSE1SFTTΛμϯϩʔυͯ͠ɺσʔλϕʔε༻ҙͯ͠ ͱ͔ɺ্ཱͪ͛Δ·Ͱ͕ΊΜͲ͍͘͞ w 8PSE1SFTTͰͷ։ൃʹಛԽͨ͠ઐ༻ͷϩʔΧϧ։ൃڥ ͕͍Ζ͍Ζ͋Δ
8PSE1SFTTͷϩʔΧϧ։ൃڥ
None
7$$8ɹIUUQWDDXDD w 7BHSBOUΛͬͨ8PSE1SFTTͷϩʔΧϧڥ w ʮ7$$8ͷΰʔϧɺ୯ʹ։ൃڥΛखͬऔΓૣ͘༻ҙͰ ͖ΔΑ͏ʹ͢Δͱ͍͏͜ͱ͚ͩͰͳ͘ɺ8PSE1SFTT͕ಈ࡞ ͢ΔڥͦͷͷΛɺϫʔΫϑϩʔؚΊͯڞ༗͢Δ͜ͱʯ w ศརͳ։ൃऀ͚πʔϧ 81$-*ɺ.BJM$BUDIFSɺ8PSENPWFʜ
w ڥ࡞Δͷʹʙ͘Β͍͔͔Δ
None
8PDLFSɹIUUQTXDLSHJUIVCJP w %PDLFSΛͬͨ8PSE1SFTTͷϩʔΧϧڥ w ʮ*55",&4+6454&$0/%450$3&"5&"/&80/&ʯ w ؆୯ͳίϚϯυͰΆΜΆΜ8PSE1SFTTڥΛ࡞ͬͨΓফ͠ ͨΓͰ͖Δ
None
-PDBMCZ'MZXIFFMɹIUUQTMPDBMHFUqZXIFFMDPN w 8PSE1SFTTಛԽܕͷ.".19".11తڥ w αΠτ͝ͱʹ1)1ɺ.Z42-ͷόʔδϣϯɺ 8FCαʔόʔ "QBUDIPS/HJOY ΛબՄೳ w ศརͳ։ൃऀ͚πʔϧ
81$-*ɺ.BJM$BUDIFSʜ w .BD൛ͱ8JOEPXT൛ʢ#FUBʣ
<൪֎ฤ>ϏϧτΠϯαʔόʔ w Ϛγϯͷ1)1ͱ.Z42-ΛͬͯϩʔΧϧڥΛ্ཱͪ͛Δ w ͜Εผʹ8PSE1SFTTಛԽͰԿͰͳ͍Ͱ͕͢͜Ε Λ͍ͬͯ·͢ʜ w .BD#PPL"JSͷ༰ྔ͕ݶքʹ͍͖ۙͮͯͨͷͰ7$$8Λਐ ΊͯϏϧτΠϯαʔόʔͰϩʔΧϧڥΛ࡞ΔΑ͏ʹͨ͠
IUUQTJODPSHCMPH w Ϛγϯ্ͷ.Z42-Λ֤ڥͰڞ༗͢ΔͷͰτϥϒϧͱશαΠ τ͕ࢮ͵
8PSE1SFTTΛ(JUཧ ͢Δͱ͖ͷ
Ͳ͜Λཧ͢Δͷ w υΩϡϝϯτϧʔτ·Δ͝ͱ ˠ8PSE1SFTTίΞɺϓϥάΠϯɺςʔϚશ෦ w XQDPOUFOU·Δ͝ͱ ˠϓϥάΠϯɺςʔϚશ෦ w ࣗ࡞ςʔϚͷΈ
υΩϡϝϯτϧʔτ·Δ͝ͱ w ϝϦοτ w ಉ͡ڥΛ؆୯ʹ࠶ݱͰ͖Δ w σϝϦοτ w ίΞϓϥάΠϯͳͲɺࣗͷॻ͍͍ͯͳ͍ίʔυ ཧରʹͳͬͯ͠·͏
ˠ8PSE1SFTTࣗಈΞοϓσʔτ͕͋ΔͷͰόʔδϣϯཧ͕ ɹࡶʹͳΔ
XQDPOUFOU·Δ͝ͱ w ϝϦοτ w 8PSE1SFTTίΞཧର֎ʹͳΔ w σϝϦοτ w ίΞϓϥάΠϯͳͲɺࣗͷॻ͍͍ͯͳ͍ίʔυ ཧରʹͳͬͯ͠·͏
ˠ8PSE1SFTTࣗಈΞοϓσʔτ͕͋ΔͷͰόʔδϣϯཧ͕ ɹࡶʹͳΔ
ࣗ࡞ςʔϚͷΈ w ϝϦοτ w ࣗͷॻ͍ͨίʔυ͚ͩΛཧରʹͰ͖Δ w σϝϦοτ w ͲͷϓϥάΠϯΛΠϯετʔϧ͢Δ͖͔ɺͦΕΒͷ όʔδϣϯͲΕΛ͍ͬͯΔͷ͔ΛࣗͰѲͯ͠
खಈཧ͠ͳ͚ΕͳΒͳ͍
ͭ·ΓͲΕΊΜͲ͍͘͞
w 8PSE1SFTTαΠτίΞ ϓϥάΠϯ ςʔϚ w ·Δ͝ͱ(JUϦϙδτϦͰཧ ˠطʹཧ͞Ε͍ͯΔίΞϓϥάΠϯͷίʔυ·Ͱ ɹೋॏཧͯ͠͠·͏͜ͱʹͳΔ w
ຊࣗͷॻ͍ͨίʔυ͚ͩཧ͍ͨ͠ ˠίΞϓϥάΠϯόʔδϣϯͰಈ࡞͕มΘΔͷͰ ɹཧ͠ͳ͍Θ͚ʹ͍͔ͳ͍
$PNQPTFS ͦ͜Ͱ
None
$PNQPTFSɹIUUQTHFUDPNQPTFSPSH w 1)1ͷґଘੑཧπʔϧ w ʮશͯͷϓϩδΣΫτύοέʔδͰ͋Δʯ w DPNQPTFSKTPOʹґଘੑΛهड़ ˠίϐϖͯ͠ଞͷϢʔβʔ͕Ϗϧυͯ͠ಉ͡ڥ͕࠶ݱʂ ˠͭ·Γ͜ͷઃఆϑΝΠϧʹॻ͔Εͨʮґଘੑใʯ͑͋͞Ε ɹͦΕΒͷύοέʔδͷʮίʔυʯཧ͢Δඞཁ͕ͳ͍
w ֎෦ύοέʔδશͯ$PNQPTFSͰཧ ˠʮࣗͷॻ͍ͨίʔυʯ͚ͩΛ(JUཧͰ͖Δʂ
None
1BDLBHJTUɹIUUQTQBDLBHJTUPSH w $PNQPTFSͷύοέʔδϦϙδτϦ w $PNQPTFSͰύοέʔδΛΠϯετʔϧ͢Δͱ͖ جຊతʹ1BDLBHJTU͔ΒΠϯετʔϧ͞ΕΔ w ࣗͰ࡞ͬͨύοέʔδ؆୯ʹެ։Ͱ͖Δʂ
جຊతͳDPNQPTFSίϚϯυ # ύοέʔδΛΠϯετʔϧ (ྫ: Symfony Yaml Component) $ composer require
symfony/yaml # ։ൃڥͰ͚ͩ͏ύοέʔδΛΠϯετʔϧ (ྫ: phpunit) $ composer require --dev phpunit/phpunit # composer.jsonɺcomposer.lock ʹهड़͞ΕͨύοέʔδΛΠϯετʔϧ $ composer install # ύοέʔδΛશ෦ߋ৽ $ composer update # ಛఆͷύοέʔδ͚ͩΛߋ৽ (ྫ: phpunit) $ composer update phpunit/phpunit
͍͍ͨ8PSE1SFTTͷϓϥάΠϯςʔϚ͕ 1BDLBHJTUͰެ։͞Ε͍ͯͳ͔ͬͨΒͲ͏͢Μͷʜ
8PSE1SFTT1BDLBHJTU
None
8PSE1SFTT1BDLBHJTUɹIUUQTXQBDLBHJTUPSH w XPSEQSFTTPSH ެࣜϦϙδτϦ Ͱެ։͞Ε͍ͯΔ ϓϥάΠϯςʔϚ͕$PNQPTFSϦϙδτϦͯ͠ ެ։͞Ε͍ͯΔϛϥʔαΠτ w ͭ·ΓɺXPSEQSFTTPSHʹެ։͞Ε͍ͯΔϓϥάΠϯ ςʔϚશͯ$PNQPTFSͰཧͰ͖Δʂ
Ͱ͜ͷล͏ͨΊʹઃఆ͢Δͷ ͦ͘ΊΜͲͦ͘͞͏ʜ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU ͦ͜Ͱʂ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU IUUQTHJUIVCDPNUPSPVOJUDPNQPTFSXQEFWLJU w $PNQPTFSͰ8PSE1SFTTίΞɺϓϥάΠϯɺςʔϚΛ ཧͰ͖Δ8PSE1SFTTͷϩʔΧϧ։ൃڥ w 8PSE1SFTTϏϧτΠϯαʔόʔͱͯ͠ىಈͤ͞Δ͜ ͱ͕Ͱ͖Δ
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU Ͱ։ൃڥΛͭ͘Ζ͏
w .BDͳΒϚγϯ্Ͱಈ͔͢ͷ؆୯ɻ Ͱ8JOEPXTʜ w ͱ͍͏͜ͱͰࠓճݪ͞Μʹ࡞͍ͬͯͨ%PDLFSΠ ϝʔδ্Ͱಈ͔͠·͢
ϋϯζΦϯ # ϏϧυΠϯαʔόʔΛىಈˍϒϥβͰ֬ೝ $ composer server # ϏϧυΠϯαʔόʔͷఀࢭ control +
c # ςετσʔλΛΠϯϙʔτ͠Α͏ $ composer import-theme-unit-test
$PNQPTFS8PSE1SFTT%FWFMPQNFOU,JU ΛͬͨςʔϚϓϥάΠϯͷՃํ๏
ϓϥάΠϯͷՃ $ composer require wpackagist-plugin/<Πϯετʔϧ͢ΔϓϥάΠϯͷεϥοά> # MW WP Form
ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-plugin/mw-wp-form # Smart Custom Fields ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-plugin/smart-custom-fields
ςʔϚͷՃ $ composer require wpackagist-theme/<Πϯετʔϧ͢ΔςʔϚͷεϥοά> # Lightning ΛΠϯετʔϧ͢Δྫ $ composer
require wpackagist-theme/lightning # Habakiri ΛΠϯετʔϧ͢Δྫ $ composer require wpackagist-theme/habakiri
$PNQPTFSͰ8PSE1SFTTίΞɾ ϓϥάΠϯɾςʔϚΛߋ৽͢Δ
;ͭ͏ʹDPNQPTFSίϚϯυͰ0, # શ෦ߋ৽ $ composer update # ಛఆͷϓϥάΠϯ͚ͩߋ৽ $ composer
update wpackagist-plugin/mw-wp-form # ಛఆͷςʔϚ͚ͩߋ৽ $ composer update wpackagist-theme/habakiri
͜͜·ͰΔͳΒɺ ཧը໘Ͱͷૢ࡞ͳΔ͘ ίϚϯυͰΓ͍ͨ
None
81$-*ɹIUUQXQDMJPSH w 8PSE1SFTTΛίϚϯυͰૢ࡞Ͱ͖Δπʔϧ w ཧը໘͔ΒͰ͖Δ͜ͱجຊతʹԿͰͰ͖Δ w Α͘͏ૢ࡞ઃఆͳͲΛγΣϧεΫϦϓτͱͯ͠·ͱ Ί͓͚ͯࣗಈԽͰ͖ΔͷͰศར w $PNQPTFS8PSE1SFTT%FW,JUΛ͑ࣗಈతʹΠϯε
τʔϧ͞ΕΔ
Α͘͏81$-*ίϚϯυ # ΠϯετʔϧࡁΈͷςʔϚΛ༗ޮԽ $ wp theme activate twentyseventeen # σʔλϕʔεจࣈྻͷஔ
(γϦΞϥΠζରԠ) $ wp search-replace http://127.0.0.1:8080 http://example.com # σʔλϕʔεͷΠϯϙʔτɾΤΫεϙʔτ $ wp db import/export
ϋϯζΦϯɹ؆୯ͳϓϥάΠϯΛͭͬͯ͘ΈΑ͏ # ϓϥάΠϯͷܗΛੜɾ༗ޮԽ # ϢχοτςετɺίʔσΟϯάن४ڌςετɺEditorConfig ੜ͞ΕΔ ! $ wp scaffold
plugin sample-plugin —activate http://localhost:9000/wp-admin # γϣʔτίʔυ [phper] ΛՃ͢ΔϓϥάΠϯΛͭͬͯ͘ΈΑ͏ https://gist.github.com/inc2734/158b59217bee19a2db9b1ba3692a8a6d
ϋϯζΦϯɹ؆୯ͳϓϥάΠϯΛͭͬͯ͘ΈΑ͏ # ϢχοτςετΛ͔͍ͯΈΑ͏ https://gist.github.com/inc2734/6c0920516d9fb909e9b8d1e89c8bff77 # ϢχοτςετΛ࣮ߦͯ͠ΈΑ͏ # PHPUnit ͷΠϯετʔϧ $
composer require --dev phpunit/phpunit # PHPUnit ΛΒͤΔҰ࣌ςετڥͷੜ $ bash ./bin/install-wp-tests.sh wordpress_test root 'hogehoge' localhost latest # PHPUnit ࣮ߦ $ /path/to/wp-content/mu-plugins/vendor/phpunit/phpunit/phpunit
։ൃڥ͚ͭͬͨ͘Ͳ σϓϩΠͲ͏͢Δͷ
w $PNQPTFS8PSE1SFTT%FW,JUͰσΟϨΫτϦԼʹ 8PSE1SFTTͷϑΝΠϧ͕ల։͞ΕΔͨΊɺجຊతʹ ·Δ͝ͱαʔόʔ্ʹΞοϓ͢Ε0, ͨͩ͠XQDPOpHQIQαʔόʔͱϩʔΧϧͰ༰͕ҟͳΔͷͰҙ w Ͱ'51Ͱຖճߋ৽ͨ͠ϑΝΠϧநग़ͯ͠Ξοϓϩʔυ ͢ΔͷΊΜͲ͍͘͞ʜ w
σʔλϕʔεʜQIQ.Z"ENJOʜΊΜͲ͍͘͞ʜ
8PSENPWFɹIUUQTHJUIVCDPNXFMBJLBXPSENPWF w 8PSE1SFTTͷσϓϩΠπʔϧ w ίϚϯυҰൃͰ·ΔͬͱΞοϓϩʔυɺμϯϩʔυ͕ Մೳ w σʔλϕʔεͷ63-ஔࣗಈ w $PNQPTFS8PSE1SFTT%FW,JUͰɺઃఆϑΝΠϧͷ
ܗΛ༻ҙͯ͘͠ΕΔͷͰͦΕΛ͑݁ߏ؆୯ w ৄ͘͠IUUQXXXTMJEFTIBSFOFUJODXQEGFT
ͰॾʑͷࣄͰ݁ߏΑ͘ಈ͔ͳ͘ͳΓ·͢ʜ
#BTI81%FQMPZ ͦ͜Ͱʂ
#BTI81%FQMPZɹIUUQTHJUIVCDPNJODCBTIXQEFQMPZ w ͭ͘Γ·ͨ͠ w γΣϧεΫϦϓτͳͷͰΘΓͱ؆୯ʹಈ͘ ͣ ཁ81$-* w ৄ͘͠
IUUQTHJUIVCDPNJODCBTIXQEFQMPZ