66
アプリケーションプラットホームとしての WordPress 2013/03/16 WordBench Osaka Takayuki Miyauchi @miya0001 13317日日曜日

アプリケーションプラットホームとしてのWordPress

Embed Size (px)

DESCRIPTION

2013/03/16 のWordBench

Citation preview

Page 1: アプリケーションプラットホームとしてのWordPress

アプリケーションプラットホームとしてのWordPress

2013/03/16WordBench Osaka

Takayuki Miyauchi@miya0001

13年3月17日日曜日

Page 2: アプリケーションプラットホームとしてのWordPress

自己紹介

13年3月17日日曜日

Page 3: アプリケーションプラットホームとしてのWordPress

✓ 和歌山県の串本町っていうすごい田舎にすんでます。

13年3月17日日曜日

Page 4: アプリケーションプラットホームとしてのWordPress

✓ フリーで仕事してますが、株式会社デジタルキューブのバックエンドエンジニアとしても仕事してます。

デジタルキューブは、Amazon Web Serviceの公認コンサルタントです。

13年3月17日日曜日

Page 5: アプリケーションプラットホームとしてのWordPress

✓ WP Total Hacks

✓ TinyMCE Template

✓ Child Pages Shortcode

✓ Nginx Cache Controller

プラグイン作ってます!

まもなくスロバキア語に対応

14ヶ国語目です!

13年3月17日日曜日

Page 6: アプリケーションプラットホームとしてのWordPress

開発にたずさわりました!

13年3月17日日曜日

Page 7: アプリケーションプラットホームとしてのWordPress

twitter: @miya0001

13年3月17日日曜日

Page 8: アプリケーションプラットホームとしてのWordPress

blog: firegoby.jp

13年3月17日日曜日

Page 9: アプリケーションプラットホームとしてのWordPress

今日のお題

13年3月17日日曜日

Page 10: アプリケーションプラットホームとしてのWordPress

WordPressで作れるのはブログや企業サイドだけじゃない!

アプリケーションプラットホームとしてのWordPress!

13年3月17日日曜日

Page 11: アプリケーションプラットホームとしてのWordPress

✓ 小さなプラグインを組み合わせてレゴのようにサービスを作ろう!

✓ プラグインとテーマを上手に分離してプログラマとデザイナーの分業をうまくやろう!

✓ BuddyPress?なにそれ?

13年3月17日日曜日

Page 12: アプリケーションプラットホームとしてのWordPress

✓ ただし、とてもプラグラマーチックな話なのでかなり省略します。

✓ 詳しく知りたい方は、ソースを見てください。

13年3月17日日曜日

Page 13: アプリケーションプラットホームとしてのWordPress

サンプルプラグインのダウンロード

http://bit.ly/wbosaka

13年3月17日日曜日

Page 14: アプリケーションプラットホームとしてのWordPress

サンプルサイト

http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 15: アプリケーションプラットホームとしてのWordPress

ログイン画面をバリバリにカスタマイズする

13年3月17日日曜日

Page 16: アプリケーションプラットホームとしてのWordPress

たとえばメンバー制のサービスを作る場合

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 17: アプリケーションプラットホームとしてのWordPress

✓ まずユーザー登録の機能が必要だね。=> WordPressに最初からあるじゃん。

✓ ログインとかのUIは?=> WordPressに最初からあるじゃん。

✓ セキュリティは?=> WordPressはパスワードとか暗号化して保存してるし、セッションとかもおまかせでいいんじゃん。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 18: アプリケーションプラットホームとしてのWordPress

というわけでサンプルのプラグインを作ってきました。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 19: アプリケーションプラットホームとしてのWordPress

ウインドウのサイズに合わせて伸び縮みする背景画像さらにスライドにもなってるんだぜー

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 20: アプリケーションプラットホームとしてのWordPress

✓ このプラグインでやってることは概ね以下の2つです。‣ ログイン画面にカスタムCSSとカスタムJSを適用。

‣ サインアップ時などにユーザーに送信されるメールのカスタマイズ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 21: アプリケーションプラットホームとしてのWordPress

- login-costomizer- login-customizer.php // プラグイン本体- cover-photos // スライド画像- includes

- pluggable.php // メールのカスタマイズ- js // JavaScript- css // CSS

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 22: アプリケーションプラットホームとしてのWordPress

3つのフックを使ってます!

✓ login_enqueue_scriptsログイン画面にCSSとJavaScriptを適用

✓ login_footerスライド用の画像の配列のJavaScriptを出力

✓ registration_errorsadminとかrootとか、登録してほしくないユーザー名を拒否

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 23: アプリケーションプラットホームとしてのWordPress

✓ あと、includes/pluggable.phpでユーザーに送信されるメールの本文をカスタマイズしてます。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 24: アプリケーションプラットホームとしてのWordPress

実際に運用する際には画像とかCSSとかはケースバイケースで変わりますよね。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 25: アプリケーションプラットホームとしてのWordPress

おや?デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 26: アプリケーションプラットホームとしてのWordPress

フィルターフックを仕込んどきました!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 27: アプリケーションプラットホームとしてのWordPress

✓ たとえば文章とか画像のパスとかにはフィルターフックを仕込んでおくと、テーマ側で後から変更できるので、実装に集中できますよ!‣ 数字とか

‣ パスとか

‣ 文章とか

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 28: アプリケーションプラットホームとしてのWordPress

テーマのfunctions.phpによるカスタマイズ例http://bit.ly/13YT5Ls

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 29: アプリケーションプラットホームとしてのWordPress

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 30: アプリケーションプラットホームとしてのWordPress

ここまでのまとめ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 31: アプリケーションプラットホームとしてのWordPress

✓ 細かいことはフィルターフックでお茶を濁して実装に集中!

✓ デザイナーさんは apply_filters っていうのを見つけたらしめしめと思うべし!

✓ 実は公式ディレクトリ上のプラグインでも隠れフックはいっぱいあります!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 32: アプリケーションプラットホームとしてのWordPress

✓ デザイナーのみなさんフィルターフックを覚えたらカスタマイズの幅が広がります!

apply_filters(‘my_login_stylesheet_uri’, ‘http://example.com/style.css’);

add_filter(‘my_login_stylesheet_uri’, ‘my_theme_style’);

function my_theme_style($stylesheet) { return ‘http://example.com/my-style.css’;}

正規表現っていうのを使って置換もできますけど、それはプログラマーに頼んじゃおう!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 33: アプリケーションプラットホームとしてのWordPress

✓ そして何よりも!フックを適切に仕込めば、そのプラグインをどこでも流用できるじゃん!

オレオレプラグインをいくつか用意すれば、レゴのように組み合わせていろいろ作れそうですよね!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 34: アプリケーションプラットホームとしてのWordPress

WordPressのRewrite APIをマスターして

パーマリンクの魔術師になろう!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 35: アプリケーションプラットホームとしてのWordPress

意外と簡単です。add_rewrite_endpoint(‘demo’, EP_ROOT);

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 36: アプリケーションプラットホームとしてのWordPress

ただしコツがある!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 37: アプリケーションプラットホームとしてのWordPress

add_rewrite_endpoint(‘demo’, EP_ROOT);で、http://example.com/demo/ でアクセスできます!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 38: アプリケーションプラットホームとしてのWordPress

パーマリンク設定はキャッシュされてるのでキャッシュを初期化する必要があります。

flush_rewrite_rules();

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 39: アプリケーションプラットホームとしてのWordPress

そして超大事なこと!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 40: アプリケーションプラットホームとしてのWordPress

キャッシュのフラッシュはプラグインを有効化した時に1度だけ行う!

register_activation_hook()はそのためのフックです!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 41: アプリケーションプラットホームとしてのWordPress

もうひとつ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 42: アプリケーションプラットホームとしてのWordPress

register_deactivation_hook() を使ってプラグインを無効化した時にも初期化!忘れると意味不明なことになります。。。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 43: アプリケーションプラットホームとしてのWordPress

残りは3つのフックで

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 44: アプリケーションプラットホームとしてのWordPress

この3つのフックにアクションを追加する

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 45: アプリケーションプラットホームとしてのWordPress

デモサイト: http://bit.ly/wbosaka-demo

init フックで、もう一回、add_rewrite_endpoint() を実行!

ただし自分を無効化するときには、なにもしない!

13年3月17日日曜日

Page 46: アプリケーションプラットホームとしてのWordPress

query_vars フックで demo を追加してあげる

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 47: アプリケーションプラットホームとしてのWordPress

template_redirect フックでコンテンツを出力

デモサイト: http://bit.ly/wbosaka-demo

コンテンツを出力

13年3月17日日曜日

Page 48: アプリケーションプラットホームとしてのWordPress

この条件分岐で true ならそのURLでアクセスがあったということ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 49: アプリケーションプラットホームとしてのWordPress

http://example.com/demo/hogehogeみたいな不要なURLでは、404を返す。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 50: アプリケーションプラットホームとしてのWordPress

コンテンツを出力するところexit で止めちゃうとこがミソ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 51: アプリケーションプラットホームとしてのWordPress

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 52: アプリケーションプラットホームとしてのWordPress

つまりWordPressのテンプレートタグがそのまんま使えちゃうんです!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 53: アプリケーションプラットホームとしてのWordPress

ここまでのまとめ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 54: アプリケーションプラットホームとしてのWordPress

✓ add_rewrite_endpoint() という関数で、WordPressから独立したウェブアプリが作れます。

✓ でもWordPressの機能はそのまま使えます!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 55: アプリケーションプラットホームとしてのWordPress

✓ ってことはですね。サービスサイトとサービスそのものをまったく別々に開発出来ます!

✓ デプロイは、管理画面からアップロードするだけ!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 56: アプリケーションプラットホームとしてのWordPress

サービスを作っちゃおう!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 57: アプリケーションプラットホームとしてのWordPress

つくったサービス

オレオレEvernoteみたいなサービスです。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 58: アプリケーションプラットホームとしてのWordPress

自慢じゃないですが、1日で作りました。(自慢ですけど)

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 59: アプリケーションプラットホームとしてのWordPress

カスタム投稿タイプ使ってます!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 60: アプリケーションプラットホームとしてのWordPress

コンテンツの保存はこれだけ。

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 61: アプリケーションプラットホームとしてのWordPress

コンテンツの出力はこれだけ。htmlはエスケープした上で

the_content っていうフィルターフックを通してます!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 62: アプリケーションプラットホームとしてのWordPress

なんで the_content フィルターを通したんだ?

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 63: アプリケーションプラットホームとしてのWordPress

✓ oEmbedやショートコードが使えるから超簡単に外部サービスのコンテンツが表示されちゃうからです!

✓ 一方でユーザーが入力したHTMLはエスケープしてます!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 64: アプリケーションプラットホームとしてのWordPress

まとめ

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 65: アプリケーションプラットホームとしてのWordPress

✓ WordPressを使うと他にもメリットはいっぱい!‣ 多言語化が簡単!

‣ くわしい人がいっぱい!

‣ セキュリティはWordPressにおまかせ!

デモサイト: http://bit.ly/wbosaka-demo

13年3月17日日曜日

Page 66: アプリケーションプラットホームとしてのWordPress

ありがとうございました!

13年3月17日日曜日