プラグインやっちまった小咄集

 プラグインやっちまった小咄集

WordBench東京 3月勉強会「WordPress プラグイン祭り」での登壇資料です。

E03953e0c18d776fead147601fdc3899?s=128

Toro_Unit (Hiroshi Urabe)

March 24, 2017
Tweet

Transcript

  1. ϓϥάΠϯ΍ͬͪ·ͬͨখᄉू ຊ౰ʹ͋ͬͨϓϥάΠϯͷڪ͍࿩ Toro_Unit / 2017.03.24 @WordBench Tokyo. 1

  2. ࢠᐌɺաࣕෆվɺੋҦաᛘ "ࢠᐌ͘ɺաͪͯվΊ͟ΔɺੋΛաͱҦ͏ɻ" ʰ࿦ޠʱӴྶެ29 2

  3. $ whoami ͜͡͠ΐ͏͔͍ 3

  4. 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
  5. ௕໺ݝদຊࢢ͔Β͖·ͨ͠ɻ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. 6

  7. Plugins • Custom Post Type Permalinks • Simple Post Type

    Permalinks • Responsive Slide • Other... Theme • Vanilla 7
  8. 8

  9. WordCamp Kyoto 2017 • 2017.06.24 ~ 25 • ژ౎େֶ ࠃࡍՊֶΠϊϕʔγϣϯ౩

    9
  10. Ξοϓσʔτͨ͠Βന͍ը໘ʹͳͬͨ ใࠂ͕͍ͬͺ͍དྷͨࣄ݅ɻ @Custom Post Type Permalinks 1.5.1 10

  11. • ͋Δ೔ͷਂ໷ϓϥάΠϯͷΞοϓσʔτΛߦ͏ɻ ͦͯ͠ཌேɾɾɾ 11

  12. 12

  13. Why!!!!???? 13

  14. • Travis CI Λར༻ͯ͠ɺPHPUnit Λ૸Β͍ͤͯͨΓɺPHPͷจ ๏νΣοΧʔΛ૸Β͍ͤͯΔɻ • σϓϩΠΛࣗಈԽ͍ͯ͠ΔͷͰɺςετʹ߹֨͠ͳ͍ͱσϓ ϩΠग़དྷͳ͍Α͏ʹͳ͍ͬͯͨɻ 14

  15. Why!!!!???? 15

  16. ݪҼɻ 16

  17. 17

  18. 18

  19. 19

  20. • PHPͷจ๏తʹ͸ɺOKɻ • खݩͷ։ൃ؀ڥͰ͸ಛʹ໰୊ແ͍ɻ • PHPUnit Ͱ΋ΤϥʔʹͳΒͳ͍ͷͰɺݕग़Ͱ͖ͳ͔ͬͨɻ 20

  21. ༷ʑͳϨΠϠʔͰςετΛߦ͏͜ͱ͸େࣄɻ • LintϚδେࣄɻ • PHPUnit΋׬ᘳͰ͸ͳ͍͠ɺ༷ʑͳϨΠϠʔͰςετΛߦ͏ ͜ͱ͸େࣄɻ • PHP_CodeSniffer and WordPress-Coding-Standards

    ΛͱΓ ͋͑ͣೖΕΑ͏ɻ • ໘౗Ͱ΋શ෦ରԠ͠Α͏ɻษڧʹͳΔࣄ݁ߏ͓͓͍Αɻ 21
  22. @see όάΛͲͷΑ͏ʹݟ͚ͭΔ͔ // Speaker Deck 22

  23. ͦͷ΄͔΍ͬͪ·ͬͨूɻ 23

  24. ҆қʹཁ๬Λ΄͍΄͍࣮૷ 24

  25. ʮ͜Μͳػೳ΄͍͠Ͱ͢ʂʯΛ҆қʹड͚ೖΕΔͱͭΒ͍ʂ 25

  26. • ࣗ෼͕େͯ͠࢖Θͳ͍ػೳͩͱݕূ͕೉͍͠ɻ • ʢͦ΋ͦ΋ԿΛݕূ͢΂͖ʁʣ • ຊ౰ʹద੾ͳઃܭɾ࣮૷͕೉͍͠ɻ • ͳͷͰɺ΍Β͔͢έʔε͕ଟ͍ɻ • ޙʑ͍Ζ͍Ζෛ୲ʹͳΔ

    26
  27. ࣗ෼͕ओମతʹऔΓ૊ΊΔ͔Ͳ͏͔ʁ͸඼࣭Λอ্ͭͰେ੾ɻ • ͦΕΛ࣮૷͢ΔͷͰ͋Ε͹ɺࣗ෼͕ඞཁͩͱࢥ্ͬͨͰɻ • ཁ๬Λग़͖ͯͨ͠ਓ΋ר͖ࠐΉͷ͸େ੾͔΋ɻ 27

  28. get_option( 'key' , default ); 28

  29. ͜ͷσϑΥϧτ஋Λม͑ͨ͘ͳͬͨɻʢtrue -> falseʣ ͔͠͠ɺ ֘౰ͷ Option ͕ଘࡏ͍ͯ͠ͳ͍৔߹ɺΞοϓσʔτ Ͱڍಈ͕มΘͬͯ͠·͏ɻ ໓஡ۤ஡ࠔͬͨɻ 29

  30. σϑΥϧτͷOptionΛget_optionͰߦ͏ͷ͸ෆຯ͍ɻ ͦ΋ͦ΋औಘ࣌ʹ͢Δ͜ͱʁ 30

  31. add_option() Λ༻͍ͯɺDBʹอଘ͢΂͠ɻ 31

  32. register_activation Ͱͷಈ࡞؀ڥͷݕূ 32

  33. • ଠޑͰ༗໊ͳਓ੍͕࡞ͨ͠ϓϥάΠϯͰى͖ͨ൵ܶɻ • PHPͷόʔδϣϯ͕5.6ະຬͷ؀ڥͰ͸ɺϓϥάΠϯ͕ಈ࡞͠ ͳ͍Α͏ʹมߋ͞Ε͍ͯͨɻ • register_activation Ͱ༗ޮԽͰ͖ͳ͍Α͏ʹͳ͍ͬͯͨͷ Ͱɺ໰୊ແͦ͞͏͕ͩɾɾɾɾ 33

  34. • ߋ৽࣌ʹ͸ɺregister_activation ͸ൃՐ͠ͳ͍!!! • ͪͳΈʹੲ(3.1ະຬ)ͷ͜Ζ͸ൃՐ͍ͯͨ͠Β͍͠ɻ #14915 • PHP5.5ҎԼͷ؀ڥͰߋ৽ͨ͠৔߹ɺ༗ޮʹͳͬͨ··!!! 34

  35. • register_activation ͚ͩͰ͸ෆे෼ɻґଘ͢ΔϓϥάΠϯ͕ ͋Δ৔߹ɺͦΕ͕ఀࢭͨ͠৔߹ͳͲ΋͋Δɻ • admin_notices ౳ͰɺΤϥʔ͸ৗʹදࣔ͢΂͠ɻ 35

  36. ͦ΋ͦ΋Ξοϓσʔτͷݕग़ͭΒ͍ɻ 36

  37. • WordPress ʹ͸ɺϓϥάΠϯͷΞοϓσʔτΛݕ஌͢ΔAPI ͕ಛʹଘࡏ͠ͳ͍ɻ • register_update_hook ͸ఏҊ͞Ε͕ͨɺ࣮૷͞Εͳ͔ͬ ͨɻ#14912 • ϓϥάΠϯ࡞Δͱ͖͸ɺϓϥάΠϯͷόʔδϣϯΛ

    Option ʹಥͬࠐΜͰ͓͘ͱ໾ʹཱͭ͜ͱ΋͋Δ͔΋͠Εͳ͍ɻ 37
  38. Singleton ਏ͍໰୊ɻ 38

  39. • WP-CLI౳ͰϓϥάΠϯͷͻͳܗΛੜ੒͍ͯ͠Δ৔߹ɺϓϥά ΠϯͷϝΠϯͷϑΝΠϧ͸ࣗಈతʹinclude͞ΕΔɻ • ϓϥάΠϯ͕࣮ߦ͞Εͨঢ়ଶͰςετ͕͸͡·Δʂ • ςετ͕ͻ͡ΐʔʹ໘౗ͳίτʹͳΔɻ 39

  40. ͦͷ Singleton ຊ౰ʹඞཁʁ ඞཁͳέʔε΋͋Δʹ͸͋Δ͸ͣɻ 40

  41. • ͦ΋ͦ΋ɺϓϥάΠϯͷClassΛϢʔβʔ͕উखʹ࢖͏Α͏ ͳέʔεΛ૝ఆ͢Δͷ͸ແҙຯɻ • ϢʔβʔαΠυͰɺϓϥάΠϯͷΠϯελϯεΛ৮Β͍ͤͨ Α͏ͳ৔߹͸ɺ૭ޱʹͳΔClassͱ͔Λ࡞ͬͨํ͕ྑ͍ɻ • ϢʔβʔଆͰ͜ͷϓϥάΠϯΛΧελϚΠζग़དྷΔΑ͏ʹ… ͬͯͷ͸ͦΕͦ͜ɺཁ๬͕དྷͨΒߟ͑Δ͜ͱɻ 41

  42. Others • plugin_basename Λ࢖͏ͱςετͰࠔΔ͜ͱ͕༗ͬͨΓ͢ Δɻʢςετ࣌ͷWordPressͷwp-contentͷதʹϓϥάΠϯ ͕ଘࡏ͍ͯ͠ͳ͍ͨΊʣ • ϓϥάΠϯ͸ҙ֎ʹ࡞Γखͱͯ͠΋͓෇͖߹͍͕ൃੜ͢Δͷ Ͱɺςετ͸େࣄɻؔ਺͕ඇਪ঑ʹͳͬͨΓ౳ͷཧ༝Ͱॻ͖ ׵͑ΔࡍͳͲҙਤͤ͵όά͕ࠞೖ͢ΔՄೳੑɻ

    • ҆қͳ࢓༷มߋɺେ޻ࣄ͸Ωέϯɻ 42
  43. ͠ΜͲ͍ʂ 43

  44. ͚Ͳ... ֶͼ΋ଟ͍ɻ 44

  45. • ϓϧϦΫΤετ΍, issue, ποίϛͳͲͰษڧʹͳΔࣄଟ͍ɻ • ʮςετͱ͔Ͳ͏ͯ͠ྑ͍͔ղΒͳ͍Ͱ͎͢ʢʼʻʣʯͱ͔ ݴ͏ͱɺϓϧϦΫ͕དྷͨΓɺϒϩάͷωλʹ͞ΕͨΓ͢Δɻ ϦϦʔε͠ͳ͍ͱɺϚαΧϦ͢ΒඈΜͰ͜ͳ͍ɻ 45

  46. ࣗ෼Ͱମݧͯͦ͜͠! 46

  47. Let's Release Your Plugin!!! 47

  48. Thanks! Github: @torounit Twitter: @Toro_Unit Facebook: fb.me/torounit Blog: https://torounit.com 48