Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Wp プラグインapiから理解するword press.share

7,840 views

Published on

このセッションでは、プラグインAPIの基本と、プラグイン作成の具体例を通じて、WordPressカスタマイズの本質と、それぞれのコンポーネントの役割を正しく整理・理解します。

1)WordPress のカスタマイズにおいて、
何が難しいのか、何が簡単なのかを理解する
2)WordPress のカスタマイズ案件における、
より適した実現方法の選択や想定が出来るようになる

【対象】ディレクター、デザイナー、プログラマーを問わず
 WordPress の理解を深めたい方

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 少し文脈が悪かった所を修正し再度アップロードしました。
    24時頃には反映完了すると思います!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Wp プラグインapiから理解するword press.share

  1. 1. プラグインAPIから理解するWordPress
  2. 2. 自己紹介‣ ノジマユウジ @yuka2py‣ 株式会社フォーエンキー代表‣ システム開発、グラフィックデザイン、DTPや印刷なども‣ PythonとJavascriptが大好き(Dartに興味深々)‣ 最近はWeb上のアプリケーション構築や、WPによるシステム開発、プラグイン作成などが主なお仕事‣ おしゃれも大好き☆‣ リボンやお花が好き☆絶賛お仕事募集中
  3. 3. 去年のボクPython1%Design15%iOS4%Android10%Web(PHP/JS)10%Windows(C#)20%お嫁40%お 嫁W i n d o w s ( C # )W e b ( P H P / J S )A n d r o i di O SD e s i g nP y t h o n2012年11月2日株式会社フォーエンキー調べPythonistaなのにね(́;ω;`)
  4. 4. 最近のボクPython1%Design5%Android5%Windows15%Web/WordPress25%お嫁50%お 嫁W e b / W o r d P r e s sW i n d o w sA n d r o i dD e s i g nP y t h o n2013年6月1日株式会社フォーエンキー調べ愛恐
  5. 5. 用語の定義カスタマイズPHPのプログラムを書いて、WPの処理を追加・変更することプラグイン利用よりも制作する場合の話。公式ディレクトリ登録というのも基本的に別
  6. 6. はじめに‣ このセッションでは、プラグインAPIの基本と、プラグイン作成の具体例を通じて、WordPressカスタマイズの本質と、それぞれのコンポーネントの役割を正しく整理・理解します。●WordPress のカスタマイズにおいて、何が難しいのか、何が簡単なのかを理解する●WordPress のカスタマイズ案件における、より適した実現方法の選択や想定が出来るようになる‣ 【対象】ディレクター、デザイナー、プログラマーを問わず    WordPress の理解を深めたい方
  7. 7. WordPress の理解を深めたい方
  8. 8. 深めたい
  9. 9. ディレクターの方へ‣ ディレクターだってWPの仕組みを知っている方がずっと良い●どんどん低くなる分業の壁‣ プラグインを無闇に使わない?●なんでもプラグインで実現できるのはWPの大きな強みですが●いらない機能まで入ってる(=>重くなるし邪魔だし)●プラグイン同士の競合で困る●でもそれは、何故か?‣ プラグインを作るという観点●プラグインは利用するだけでなく作る事もできる●特徴・意味●メリット・デメリット●簡単な点・難しい点‣ 業務へのフィードバック●より良いアプローチや手法の選択ができるようになること●そのキッカケに!
  10. 10. デザイナーの方へ‣ 仕組みを知ろう!●グラフィックデザインはアプリケーションUIの主役●仕組みを知ることでこそ出来るアプローチやデザインもある●プログラマさんに文句言われそうでやりたいことが出来なかったり●マジで怒られたり‣ 目標!●コピペ卒業●テンプレートのPHPは読めるようになる●簡単なフックぐらいはできるようになる‣ 今日はそのキッカケに!●特にフック関連について注目して頂けたらと思います
  11. 11. 開発者の方へ‣ プラグイン作るの難しい?って思っていたら●何が簡単で、何が難しいのか分けて理解する●今日の話で、そうでもなさそうだね、って思ってもらえると嬉しい‣ WPでの受託開発●テーマのインプリ以上のカスタマイズが来た時に…●どのようにアプローチできるか?(選択肢を増やす)●どういうリスクがあるか確認して、見積もりなどで活かせるように‣ 出来ればプラグインとか作れるように●あわよくば公式公開とか目指して●WPに貢献できるように
  12. 12. 本日のお品書き‣ プラグインとは?●簡単なプラグインの紹介●プラグインの要件と意味●プラグイン化する/しない‣ WordPress のカスタマイズとプラグインAPI●フックの意味と基本●プラグインAPIとは?‣ WPのカスタマイズの難しいところ●WPならではの難しさ、そしてカスタマイズの難しさを知る‣ まとめ‣ おまけ●時間があれば!
  13. 13. プラグインとは?
  14. 14. Q作るのは、むずかしい?(?_?)
  15. 15. A難しいかどうかは、何をするか、による。別に、「プラグイン」が難しいわけじゃない(´・ω・`) フーン大事
  16. 16. まぁ、とりあえず作ってみる(*’д’*)イマヤルノ?
  17. 17. 「怒れる嫁。」(〃ノωノ)イマデショ!
  18. 18. <?php/*Plugin Name: 怒れる嫁。*/function ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );こんな感じで…01020304050607080910111213Ctrl+s
  19. 19. できた!(*’д’*)コレダケ?
  20. 20. 適当な名前でファイルに保存↓/wp-content/plugins/ に置く(´・ω・`)フムフム
  21. 21. ちゃんと出来てるちゃんとプラグインってますし(゚д゚ ) ホンマヤネ..
  22. 22. プラグイン有効化 <前>(・д・)
  23. 23. プラグイン有効化 <後>ちゃんと怒ってる((((; ゚Д゚))) ヨメコエー
  24. 24. WordPress の「プラグイン」なんて、まぁ、こんなもの(・д・)コレナラアッシニモデキソデス敢えて言ってみます
  25. 25. どういうことか?
  26. 26. プラグインの解説プラグイン情報ヘッダ<?php/*Plugin Name: 怒れる嫁。*/function ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );
  27. 27. プラグイン情報ヘッダ‣ WPにプラグインを認識させるために必要な情報‣ 最低限「Plugin Name」があれば良い‣ でも、いちおう普通は、右の情報ぐらいを書く/*Plugin Name: 怒れる嫁。Plugin URI: http://foreignkDescription: 嫁を怒らせますVersion: 1.0Author: yuka2pyAuthor URI: https://twitterLicense: GPL v2*/
  28. 28. 以上。(´・ω・`)ンン?プラグインの解説はこれで全てです。 <(_ _)>
  29. 29. プラグインの解説プラグイン情報ヘッダ<?php/*Plugin Name: 怒れる嫁。*/function ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );ここは無くてもプラグイン(*’д’*)ソナノ?
  30. 30. プラグインはプラグイン。
  31. 31. もちろん何もしないけど。処理を書かないと、もちろん何もいたしません。
  32. 32. WPの「プラグイン」はただのプログラムの置き場所。(´・ω・`) フーン先ほどの「こんなもの」発言は、この事について言っています。実は
  33. 33. この部分は、functions.phpに書いても動くなので…<?php/*Plugin Name: 怒れる嫁。*/function ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );
  34. 34. 「プラグイン」とは?‣ プラグインは、ただのプログラムの置き場所●でも↑この理解が大事!‣ 出来る事は一緒●テーマのfunctions.phpに書くのと、ほとんど違いは無い‣ プラグインの技術要件●/wp-content/plugins/にファイルを配置●プラグイン情報ヘッダこれだけあればプラグイン
  35. 35. では「プラグイン」の意義は?‣ 外観と機能の分離●テーマを変えてもプラグインの機能は有効●機能のみを提供●外観はテーマ、機能はプラグイン‣ 管理・運用面●プラグイン単位での管理●管理画面での有効化/無効化●プログラマ以外による、リリースや停止が可能‣ 開発面●コードの再利用性の向上●必然的に、プラグイン境界で分離されたコードを書くため●結果、複数サイトでの再利用がしやすくなる●一方で、コスト増の懸念●再利用しやすいコードを書くのには手間が掛かる●実際ににいろいろなサイトで使えるようにするために、オプションで設定ができるようにするなどの配慮が必要になることも
  36. 36. じゃあ...
  37. 37. Qどういう時にプラグイン?どのように判断すべきか。
  38. 38. A観点、対象、運用などによる。一概には言えない話(立場)  (汎用性・目的)  (利用者)
  39. 39. プラグインにする・しない‣ 他のサイトでも利用できそうな汎用的な機能なら...●自社開発用のプラグイン●よくつかう機能をまとめたものがあると便利かも?●先々、公式ディレクトリへの登録を考えてプラグインに●個人・法人を問わず、公式ディレクトリへの登録はポートフォリオとして有益‣ サイト固有の機能は?●僕個人は、プラグインにせず、PHPのモジュールにしてfunctions.php から requireすることが多い(手軽)(テーマを変更するという要件が無い時)●一方、「テーマは外観の表現に停めるべき」との観点からプラグインとして実装する方も●なお、公式ディレクトリに登録するテーマの場合は、機能実装は含まないのが原則個人的な考え
  40. 40. テーマでOKNOテーマかな?NO他のサイトで使える?(汎用性ある?)汎用的に作れるそう?YESあわよくば公式に公開したり広く配布できる感じ?YES本格プラグイン(を目指す)YESプラグインにする・しない 個人的な考えとりあえずプラグインNO先々どうするかわからないので、とりあえずプラグインとして作っておくけれど、汎用化などは考えない
  41. 41. まぁ とにかく、プラグイン作るのってワリと簡単なんですね!(・∀・) チョロソウッスネ
  42. 42. そんなワケがない。「プラグインにする」のは簡単だけど、プラグインの「機能を開発する」のは難しいことが多いです。(;゚д゚)...デスヨネ....
  43. 43. 最初の話...
  44. 44. 難しいかどうかは、何をするか、による。どんなカスタマイズをするか?
  45. 45. じゃあ、
  46. 46. WordPress のカスタマイズとは?
  47. 47. WordPress のカスタマイズとプラグインAPI
  48. 48. プラグインは作った事なくても、テーマを作成されたことがある方は多いハズ。(;゚∀゚)モチノロンヨ..
  49. 49. フックしましたか?(;゚∀゚)エット....
  50. 50. フックしてると良いんですが... (* - *)コピペでもいいです!(;゚∀゚)ハイシマチタ....管理画面からプラグインをインストールして利用されているまでの方もいらっしゃるかも知れませんが、ここではいちおうそういうことで (* - *)
  51. 51. そのフックがWPカスタマイズの根幹。(゚_゚)フムフム
  52. 52. 「怒れる嫁。」(´・ω・`) マタキタヨ
  53. 53. ここがカスタマイズ部分カスタマイズ部分の解説プラグイン情報ヘッダ処理を作ってWPに登録<?php/*Plugin Name: 怒れる嫁。*/function ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );
  54. 54. ‣ 実現したい処理は、PHPで書く‣ ここでは、単純な文字の置き換えをしてます処理を作る④置き換えて⑤返す②嫁という字を③この文字列に①ここに入っているfunction ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}
  55. 55. WPに登録する‣ 作った処理を WP に実行させる為、登録する‣ これをWordPressでは「フックする」と言う登録するこれがフックadd_filter( the_content, ikareruyome );
  56. 56. では、フックは何をするのか?
  57. 57. WordPress の仕組みのおさらいInsideWordPress
  58. 58. 予め決められた処理初期化URLを解析対応するデータを検索対応するテンプレートを表示WordPressの基本動作メインクエリRequestResponse
  59. 59. 予め決められた処理に...割り込む!フックのイメージRequestResponse初期化URLを解析対応するデータを検索対応するテンプレートを表示変更追加変更変更フック
  60. 60. フックは WordPress の処理を追加・変更する重要な仕組み(カスタマイズする)
  61. 61. この仕組みの為に用意された「道具」を「プラグインAPI」と言います。「API」とは、プログラムで使える「道具」のこと。豆知識
  62. 62. では無い↓プラグインを作る道具誤解がないように捕足プラグインAPI
  63. 63. ↓WPのカスタマイズの為の重要な道具プラグインAPI
  64. 64. なので、プラグインはもとより
  65. 65. テーマのカスタマイズでも使うだから、テーマの作成中に、functions.php でフックしたことがあるハズ。(*゚ー゚)ナルホドネ
  66. 66. プラグインAPI を詳しく。PluginAPI
  67. 67. プラグインAPIとはWordPressの処理を追加・変更するために使う道具‣ 2つのフック●アクション●フィルター‣ 上書き可能なコア関数(今回は割愛)Codexでも取扱大メインはフックhttp://codex.wordpress.org/Pluggable_Functions
  68. 68. 2つのフック‣ アクション●特定のタイミングで、処理を追加するイメージ‣ フィルター●特定のタイミングで、既定のデータや処理を変更するイメージ●変更したデータを返す‣ 2つのフックの違いは?●厳密に分けるのは難しい?●Codexでも説明されているが実態と少し違うかな?●アクションフックでも、pre_get_posts みたく既定の処理変更するものも多い。●なので、あまり難しく考えないでおきましょ♪Point
  69. 69. フックの名前 フックさせる関数実行の優先順位(未指定の時は、10)フック関数の引数の数(未指定の時は、1)フックする方法‣ add_filter() または add_action() 関数を使うadd_filter( $tag, $function,$priority = 10, $accepted_args = 1 )
  70. 70. ②関数にまとめてアクションフックしてみるフックの名前 フックするさせる関数③登録①実現したい処理(設定画面を追加)function ikayome_option_menu() {add_options_page( 怒れる嫁の設定,怒れる嫁の設定, admin , ikayome ,display_ ikayome_option_menu );}add_action( admin_menu, ikayome_option_menu, 20 );
  71. 71. フィルターフックしてみる②関数にまとめてフックの名前 フックするさせる関数③登録①実現したい処理(文字列の置換)アクションと一緒フィルターは値を返すfunction ikareruyome( $content ) {return str_replace( 嫁, <font size="6">( #゚Д゚ )ヨメ</font> ,$content );}add_filter( the_content, ikareruyome );
  72. 72. こんなふうに、プラグインAPIも、簡単。(* ゚ω゚ *)デスカネ?
  73. 73. まぁ、よく考えてみると、「道具」が難しいわけはない。(つ゚o゚⊂)タシカニ...
  74. 74. じゃあ、
  75. 75. なにが難しい?(゚_゚)フムフム…
  76. 76. WordPress のカスタマイズの難しいところ
  77. 77. ①フックを探すのが難しい【WPカスタマイズの何が難しい】
  78. 78. QWordPressには、どんなフックがありますか?
  79. 79. A一般的リクエスト中に実行されるアクションmuplugins_loadedplugins_loadedsanitize_comment_cookiessetup_themeload_textdomainafter_setup_themeauth_cookie_malformedset_current_userinitwidgets_initregister_sidebarwp_register_sidebar_widgetwp_loadedparse_request*send_headers*pre_get_posts*posts_selectionwp*template_redirectget_headerwp_headwp_enqueue_scriptswp_print_styleswp_print_scriptsget_template_part_looploop_start*the_post*loop_end*get_sidebardynamic_sidebarget_search_formparse_query*wp_metaget_footertwentyten_creditswp_footerwp_print_footer_scriptsshutdown管理画面リクエスト中に実行されるアクションmuplugins_loadedplugins_loadedsanitize_comment_cookiessetup_themeload_textdomainafter_setup_themeauth_cookie_validset_current_userinitwidgets_initregister_sidebarwp_register_sidebar_widgetwp_loadedauth_redirectwp_default_scripts*_admin_menuadmin_menuadmin_initload-edit.phpparse_request*send_headers*parse_query*pre_get_posts*posts_selectionwp*admin_xml_nswp_default_styles*admin_enqueue_scriptsadmin_print_styles-edit.phpadmin_print_stylesadmin_print_scripts-edit.phpadmin_print_scriptswp_print_scriptsadmin_head-edit.phpadmin_headin_admin_headeradminmenuadmin_noticesrestrict_manage_poststhe_post*in_admin_footeradmin_footeradmin_print_footer_scriptswp_print_footer_scriptsadmin_footer-edit.phpshutdown投稿、ページ、添付ファイル(アップロード)関連のフィルタattachment_iconget_attachment_iconattachment_innerHTMLget_attachment_innercontent_edit_preexcerpt_edit_pretitle_edit_preget_attached_fileget_enclosedget_pagesget_pungget_the_excerptget_the_guidget_to_pingicon_diricon_dir_uriprepend_attachmentsanitize_titlesingle_post_titlethe_contentthe_excerptthe_tagsthe_titlethe_content_rssthe_excerpt_rssthe_title_rssthe_editor_contentwp_dropdown_pageswp_list_pageswp_list_pages_excludeswp_get_attachment_metadatawp_get_attachment_thumb_filewp_get_attachment_thumb_urlwp_get_attachment_urlwp_mime_type_iconwp_titleadd_pingattachment_max_dimscategory_save_precomment_status_precontent_filtered_save_precontent_save_preexcerpt_save_preexcerpt_save_preping_status_pretitle_save_prepost_mime_type_prestatus_save_prephone_contentthumbnail_filenamewp_thumbnail_creation_size_limitwp_thumbnail_max_side_lengthupdate_attached_filewp_delete_filewp_generate_attachment_metadatawp_update_attachment_metadataコメント・トラックバック・ピンバック関連のフィルターcomment_excerptcomment_flood_filtercomment_post_redirectcomment_textcomment_text_rsscomments_arraycomments_numberget_comment_excerptget_comment_IDget_comment_textget_comment_typeget_comments_numberpost_comments_feed_linkcomment_save_prepre_comment_approvedpre_comment_contentpreprocess_commentカテゴリー関連のフィルターcategory_descriptioncategory_feed_linkcategory_linkget_categoriesget_categorylist_catslist_cats_exclusionssingle_cat_titlethe_categorythe_category_rsswp_dropdown_catswp_list_categoriespre_category_descriptionpre_category_namepre_category_nicenameリンク関連のフィルターattachment_linkget_attachment_linkauthor_feed_linkauthor_linkday_linkfeed_linkget_comment_author_linkget_comment_author_url_linkmonth_linkpage_linkpost_linkthe_permalinkyear_link日付・時間関連のフィルターget_comment_dateget_comment_timeget_the_modified_dateget_the_modified_timeget_the_timethe_datethe_modified_datethe_modified_timethe_timethe_weekdaythe_weekday_date投稿者・ユーザー関連のフィルターauthor_emailcomment_authorcomment_author_rsscomment_emailcomment_urlget_comment_authorget_comment_author_emailget_comment_author_IPget_comment_author_urllogin_errorslogin_headertitlelogin_headerurllogin_messagerole_has_capsanitize_userthe_authorthe_author_emailpre_comment_author_emailpre_comment_author_namepre_comment_author_urlpre_comment_user_agentpre_comment_user_ippre_user_idpre_user_descriptionpre_user_display_namepre_user_emailpre_user_first_namepre_user_last_namepre_user_loginpre_user_nicknamepre_user_urlregistration_errorsuser_registration_emailvalidate_usernameリンク集関連のフィルターget_bookmarkslink_categorylink_descriptionlink_titlelink_ratingpre_link_descriptionpre_link_imagepre_link_namepre_link_notespre_link_relpre_link_rsspre_link_targetpre_link_urlブログ情報・設定関連のフィルターall_optionsbloginfobloginfo_rssbloginfo_urlloginoutoption_設定名pre_option_設定名upload_dirupload_mimesテキスト関連のフィルターattribute_escapejs_escape管理画面関連のフィルターautosave_intervalcat_rowscomment_edit_precomment_edit_redirectcomment_moderation_subjectcomment_moderation_textcomment_notification_headerscomment_notification_subjectcomment_notification_textcron_schedulesdefault_contentdefault_excerptdefault_titleformat_to_editexplain_nonce_動詞-名詞format_to_editformat_to_postmanage_link_columnsmanage_posts_columnspostmeta_form_limitpre_upload_errorpreview_page_linkpreview_post_linkrichedit_preshow_password_fieldsthe_editoruser_can_richedituser_has_capwp_handle_uploadwp_upload_tabsリッチエディター関連のフィルターmce_spellchecker_languagesmce_buttons、mce_buttons_2、mce_buttons_3、mce_buttons_4mce_cssmce_external_pluginsmce_external_languagestiny_mce_config_urltiny_mce_before_initテンプレート関連のフィルターkubrick_header_colorkubrick_header_displaykubrick_header_imagelocale_stylesheet_uristylesheetstylesheet_directorystylesheet_directory_uristylesheet_uritemplatetemplate_directorytemplate_directory_uritheme_roottheme_root_uriその他の高度なフィルターauthor_rewrite_rulescategory_rewrite_rulescomments_rewrite_rulesdate_rewrite_rulespost_rewrite_rulespage_rewrite_rulessearch_rewrite_rulesroot_rewrite_rulesmod_rewrite_rulesrewrite_rules_arraycreate_user_queryfound_posts_queryqueryquery_varsrequestupdate_user_queryfound_postsget_next_post_joinget_next_post_sortget_next_post_whereget_others_draftsget_previous_post_joinget_previous_post_sortget_previous_post_whereget_users_draftspost_limitsposts_distinctposts_fieldsposts_groupbyposts_join_pagedposts_orderbyposts_requestposts_where_pagedposts_joinposts_wherethe_postsgettextlocaleもっっ∼っすごい、あります。全部は知りません。<(_ _)>
  80. 80. フックを探すのが難しい‣ とにかく沢山あるので…‣ やりたい処理ができるフックを探すのが難しい●でもこれは必須!‣ 用途に合ったフックを探すのが難しい●これがいい加減だと、後でコードを見て「なんでこんなトコでこんなコトを?」とナゾになることも‣ WPの実行順やタイミングに合うフックを使うのも難しい●タイミングを間違うと効かない処理もあったりします。‣ うまく早くフックを探すには、知識・経験・勘が必要●とりあずは修行!●でも頑張って探すとWPを深く知ることができて、それは…
  81. 81. ②仕組みを知るのが難しい【WPカスタマイズの何が難しい】
  82. 82. 深入りするには仕組みの理解も‣ WordPressの処理や構造の理解が必要●単純なことをしている時はそうでも無いが●少し複雑な処理をやりだすとWPの仕組みのしっかりとした理解が必要●少なくとも基本理解は必須●query_posts でアワワワ ヽ( ;́Д`)ノ‣ WPのソースコードも...●WPコアのコードは良くも悪くもPHPライクなので読み易いと言えば読み易いが…●極端に長い関数など、読み難いものもあり、開発者(←僕)の理解を妨げる●後方互換性の為に残されている多くのコードや関数も、複雑性に繋がっている?
  83. 83. ③他のプラグインのこと考えると 難しい。【WPカスタマイズの何が難しい】
  84. 84. 他のプラグインと上手くやる‣ 他のプラグインの動作や、そのデータを考慮する必要がある●好き勝手にルーティングを変更したら、パン リストがヘンテコ?(WPのルール)●フックして投稿を複製したら、他のプラグインが作ったカスタムフィールドがコピーされない(独自テーブル)●プラグインAで行った処理がプラグインBの処理で反映されない…(実行順序)‣ それらの対応コストを事前に出すのが難しい●予期せぬ工数でアワワワ ヽ( ;́Д`)ノ
  85. 85. こんなWPならではの、難しさの他にも、
  86. 86. 開発全般における難しさも、普通にあったりして、
  87. 87. やっぱり何が難しいとは、さっぱりとは言えない。まぁ、システム開発全般そうではありますが (* - *)
  88. 88. でも、敢えて言うなら、
  89. 89. WPの作法に沿うこと。難しいけれども、とても大切。
  90. 90. これはどんなフレームワークでも同じ。
  91. 91. でも、それが意外と難しい。
  92. 92. たとえばちょっとしたデザイン上のプラスαが、
  93. 93. ちょっとした工数になったり。実際これはよくあります。
  94. 94. 無闇なプラグインの利用が、
  95. 95. 予期せぬ問題に繋がったりもします。時々ありますが、インパクトが大きい…。
  96. 96. だから、
  97. 97. 開発者だけでなく、できればチームのみんなで、理解したい WordPress。
  98. 98. 良いサイトを作るためにも。(o^ω^o)チームみんなで理解したいWordPress。
  99. 99. ごめん。難しいって言い過ぎた!フォローします!
  100. 100. 去年、簡単って言ったよね?‣ 僕は WordCamp Osaka2012 で「WP簡単だよ」と発表しておりますのでフォローします!‣ 基本機能が充実!!●知っての通りの充実の基本機能!Webアプリで必要な機能がてんこもり!‣ プラグインがあなたの開発をサポート!●強力な味方のプラグイン!(使う分には!)●でも無闇には使わない方が色々と無難!●プラグインにUIが付属(そのまま納品できる)●この辺りがいわゆるWebApp フレームワークと大きく違う
  101. 101.  もう1ページフォロー!‣ めちゃくちゃ開発者フレンドリー!!(さっき少し愚痴をこぼしましたが)●DBのテーブル少ない●スキーマ見たらホッとする●フック多いけど、覚えるルールは少ない●PHPだし構造がシンプルだから、ワリと何とでもなる●わずか数行でカスタム投稿タイプを追加できるのは素晴らしい●M○を理解するよりは、ずいぶん簡単!(↑あくまで個人的感想なので、 関係者各位お許しを…)‣ 奇麗な管理画面に萌える‣ コミュニティ熱いよね!
  102. 102. まとめ
  103. 103. ディレクターの方へ‣ ディレクターだってWPの仕組みを知っている方がずっと良い●どんどん低くなる分業の壁‣ プラグインの過剰利用は避ける●プラグイン同士の競合で困る●特に、同種のデータを扱う時●いらない機能まで入ってる(=>重くなるし邪魔だし)●独自のカスタマイズを難しくする。リスクやコストの増加‣ カスタマイズの実装をプラグイン化することも検討できる●プラグイン化自体は簡単●機能と外観の分離●汎用性を高めるという点で、難易度は上がる●プラグイン化するメリット●受託開発したものをベースに、公式プラグイン作成●ポートフォリオを豊かに●有償サポートをビジネスに
  104. 104. デザイナーの方へ‣ 仕組みを知る事で自由を●グラフィックデザインはアプリケーションUIの主役●仕組みを知ることでこそ出来るアプローチやデザインもある●プログラマさんに文句言われそうでやりたいことが出来なかったり●マジで怒られたり‣ 今日はプラグインAPI中心のお話しでしたが…●フックはWordPressのカスタマイズの根幹●コピペを卒業するためにもフックの理解は必要●今日の話で少しでも理解が進むと嬉しいです
  105. 105. 開発者の方へ‣ 凝ったWPカスタマイズの打診があったとき●他に導入されるプラグインを確認し、リスクを想定する●同種のデータを扱うものは注意●想定が難しい時は、クライアントとも相談‣ プラグイン開発を受注したら●プラグイン化の目的を確認する●汎用化の度合いをクライアントと擦り合わせる‣ プラグイン化を考えよう!●プラグイン化も有用な実装手段の一つ●せっかく書いたコード、再利用しやすくしない手はない●汎用化など、難しいところもあるが、結果、WPをもっとよく理解できる●せっかくだから、公式にアップできるようになろう!(・∀・) オマエモナ
  106. 106. おまけ
  107. 107. フックの探し方。僕の
  108. 108. フック名が分かる時‣ http://adambrown.info/p/wp_hooks/version/3.5‣ ブラウザの検索で探せる‣ サイトでソースまで閲覧できるので●引数の確認●意味合いの確認
  109. 109. 処理の流れで探したい時‣ Debug Bar Actions andFilters Addonプラグイン‣ その画面で、呼ばれているアクションフックが、呼ばれている順で確認出来る●あるタイミングで処理するフックを探したい時●フックの意味を確認したい
  110. 110. 雰囲気?で探したい時‣ ソースを検索する●WordPress全体を検索する(正規表現を使う)●「なんとなくこんな処理がしたいんだけどフックあるかな?」的な時便利‣ 地道にソースを追う●それっぽい場所のソースを開いて読むと、意外な発見があったりする(do_action¦apply_filters)(_ref_array)?( ?["][_"w]*検索文字列フック検索正規表現
  111. 111. 道具は色々。知っ得
  112. 112. WPのプログラムの道具は
  113. 113. Plugin APIShortcode APIWidget APIDatabase API- Metadata API- Options API- Transients APISettings APITheme Modification APITheme Customization APIQuicktags APIRewrite APIHTTP APIFile Header APIFile System APIDashboard Widget APIXML-RPC WordPress APIetc...etc...他にもいろいろ、在る。http://wpdocs.sourceforge.jp/WordPress_APIfromCodex他にも、wpdb や WP_Query 、wp-cron、wp_mail や あと i18n も APIだと思うので、実際もっとたーーーーーーっくさんある!
  114. 114. WordPress の API (1)‣ Plugin API●WordPressの既定の処理を変更する‣ ShortCode API●投稿本文で使えるマクロスクリプトの登録‣ Widget API●ウィジェットの作成‣ Database API●Metadata APIカスタムフィールドなど、post/user/comment に付帯するメタ情報の管理●Option APIアプリケーションのオプション値などを保存●Transients API一時キャッシュの為のAPI
  115. 115. WordPress の API (2)‣ Settings API●プラグインやテーマの独自の管理画面の作成をサポートする‣ Theme Modification API●カレントテーマ固有のオプション値を取得・保存‣ Theme CustomaizationAPI●テーマカスタマイザーの準備や拡張‣ Quicktags API●投稿編集画面のビジュアルエディタに機能を追加‣ Rewrite API●URLルーティングの追加・変更‣ HTTP API●http GET/POST/Other.. でリモートサーバーのデータを取得
  116. 116. WordPress の API (3)‣ File Header API●テーマやプラグインのメタ情報を取得‣ File System API●ローカルの他、FTP、SSH2などでのファイルアクセス‣ ダッシュボードウィジェットAPI●管理画面ダッシュボードにウィジェットを追加‣ XML-RPC WordPress API●XML-RPC を使った Web APIインターフェース
  117. 117. ご清聴、ありがとうございました!
  118. 118. @yuka2py
  119. 119. この文書は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。

×