word bench富山4月富山市 wordpressで作る会員管理システム

70
WORDPRESSで作る 会員管理システム マルチメディア房

Upload: youichi-okada

Post on 29-Jul-2015

84 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: Word bench富山4月富山市 wordpressで作る会員管理システム

WORDPRESSで作る会員管理システム

マルチメディア⼯工房 陽

Page 2: Word bench富山4月富山市 wordpressで作る会員管理システム

とある学会の会員管理• 1000⼈人弱の会員を管理する

• 年に1〜~2度発⾏行物がある

• 年会費の⼊入⾦金処理がある

• 担当者は⼀一⼈人 ←

Page 3: Word bench富山4月富山市 wordpressで作る会員管理システム

とある学会の会員管理• 1000⼈人弱の会員を管理する

• 年に1〜~2度発⾏行物がある

• 年会費の⼊入⾦金処理がある

• 担当者は⼀一⼈人 ← 担当者は⼀一⼈人 ←

Page 4: Word bench富山4月富山市 wordpressで作る会員管理システム

担当者は⼀一⼈人

Page 5: Word bench富山4月富山市 wordpressで作る会員管理システム

しかも本業は別

Page 6: Word bench富山4月富山市 wordpressで作る会員管理システム

( ゜Д゜)ポカーン

Page 7: Word bench富山4月富山市 wordpressで作る会員管理システム

とある学会の会員管理• 1000⼈人弱の会員を管理する

• 年に1〜~2度発⾏行物がある

• 年会費の⼊入⾦金処理がある

• 担当者は⼀一⼈人

• それをエクセルで ←

Page 8: Word bench富山4月富山市 wordpressで作る会員管理システム

とある学会の会員管理• 1000⼈人弱の会員を管理する

• 年に1〜~2度発⾏行物がある

• 年会費の⼊入⾦金処理がある

• 担当者は⼀一⼈人

• それをエクセルで ← それをエクセルで ←

Page 9: Word bench富山4月富山市 wordpressで作る会員管理システム

それをエクセルで

Page 10: Word bench富山4月富山市 wordpressで作る会員管理システム

( ゜Д゜)ポカーン

Page 11: Word bench富山4月富山市 wordpressで作る会員管理システム

そこで⼀一⼈人の漢(オトコ)が⽴立ち上がった

Page 12: Word bench富山4月富山市 wordpressで作る会員管理システム

古川 陽⼀一

Page 13: Word bench富山4月富山市 wordpressで作る会員管理システム

こうして僕たちの戦いが始まったのだった

Page 14: Word bench富山4月富山市 wordpressで作る会員管理システム

第⼀一部 完

つづく

Page 15: Word bench富山4月富山市 wordpressで作る会員管理システム

改めて• エクセルで会員管理

• 会員数は1000⼈人弱

• 年次処理(⼊入会、退会、休会、⼊入⾦金)アリ

• 住所に向けて発⾏行物あり

Page 16: Word bench富山4月富山市 wordpressで作る会員管理システム

エクセルは便利だけど…• エクセル != システム

• エクセル != データベース

Page 17: Word bench富山4月富山市 wordpressで作る会員管理システム

エクセルで管理すると…• あちこちでフォーマットがぐちゃぐちゃ

• どの項⺫⽬目を列挙するか定まらない

• いわゆるモデリングができていない

• データがどこにあるか分からない

Page 18: Word bench富山4月富山市 wordpressで作る会員管理システム

エクセルで管理すると…• ⼊入⼒力が⼤大変

• でもオートフィルは便利

• 履歴の管理不可

• 複数⼈人運⽤用不可

Page 19: Word bench富山4月富山市 wordpressで作る会員管理システム

古川さんの提案したこと• Webシステムで作る

• データベースで管理

• 帳票とかの出⼒力が可能

• 絞り込み検索可能

•いわゆる会員管理システム

Page 20: Word bench富山4月富山市 wordpressで作る会員管理システム

会員管理システム• システム業界では良くある事例

• 顧客だったり、製品だったり、商品だったり

• ○○管理システム

• 帳票とかもよく必要とされる

Page 21: Word bench富山4月富山市 wordpressで作る会員管理システム

帳票 って皆さんご存じです?• 業務に関わる書類のこと

• ⾒見積書、請求書、給与明細、⼀一覧表など

• 例1) 三⽉月に仕⼊入れた品物⼀一覧

• 例2) 当⽉月の全社員分の給与明細

Page 22: Word bench富山4月富山市 wordpressで作る会員管理システム

昔からあるシステム• 30年ほど前

• オフコン、DB2、COBOL…

• 15年ほど前

• VBA、Access…

• 最近だと

• Webでの管理システム

Page 23: Word bench富山4月富山市 wordpressで作る会員管理システム

WEBでの管理システム• ブラウザで操作可能

• 昔はそうじゃなかった!

• パソコンを限定されない

• 複数⼈人アクセス可能

Page 24: Word bench富山4月富山市 wordpressで作る会員管理システム

会員管理システムって何が必要?• 1000⼈人ほど会員がいて

• 会員には名前とか住所とかの属性があって

• 会員ごとに絞り込みとかかけて

• 印刷したい

Page 25: Word bench富山4月富山市 wordpressで作る会員管理システム

うーん⼤大変そうだなぁ…

Page 26: Word bench富山4月富山市 wordpressで作る会員管理システム

あれ?でもこれWORDPRESSで⾏行けそうじゃん?

Page 27: Word bench富山4月富山市 wordpressで作る会員管理システム

会員管理システムって何が必要?• 会員ごとに絞り込みとかかけて

• => WP_Queryとか

• 印刷したい

• => テーブルレイアウトとCSS

Page 28: Word bench富山4月富山市 wordpressで作る会員管理システム

会員管理システムって何が必要?• 1000⼈人ほど会員がいて

• => カスタム投稿タイプ

• 会員には名前とか住所とかの属性があって

• => カスタムフィールド

Page 29: Word bench富山4月富山市 wordpressで作る会員管理システム

いける!

Page 30: Word bench富山4月富山市 wordpressで作る会員管理システム

WORDPRESSなら• ログイン周りOK

• 編集画⾯面OK

• テーマあるから流⽤用できちゃう

• 並び変えとかも結構できちゃう

Page 31: Word bench富山4月富山市 wordpressで作る会員管理システム

というわけでWORDPRESSでの開発を

決めました

Page 32: Word bench富山4月富山市 wordpressで作る会員管理システム

第⼆二部 完

つづく

Page 33: Word bench富山4月富山市 wordpressで作る会員管理システム

第三部

こんなのできました

Page 34: Word bench富山4月富山市 wordpressで作る会員管理システム

作ってみたまとめ• ⽤用意されてる機能が豊富なので早い

• フルスクラッチ開発(ゼロから開発)するより圧倒的に早い

• カスタム投稿タイプとかそれなりにつくってくれる

Page 35: Word bench富山4月富山市 wordpressで作る会員管理システム

第四部

開発で使ったテクニック

Page 36: Word bench富山4月富山市 wordpressで作る会員管理システム

問題• postmetaで並び変えしたい

• しかも複数のキーで並び変えしたい

• 例) 会員番号 + ⽣生年⽉月⽇日

Page 37: Word bench富山4月富山市 wordpressで作る会員管理システム

ぶっちゃけ• ⽣生のSQLなら余裕なのに…

• ORDER BY meta1 DESC, meta2 ASC など

• WordPressで⽤用意されているorderby

• metakeyは⼀一つだけ

Page 38: Word bench富山4月富山市 wordpressで作る会員管理システム

ソースコードを⾒見てみると• 本体のコードだとmeta_key⼀一つしか来ない前提のコード

• 書き換えたい衝動に駆られる

Page 39: Word bench富山4月富山市 wordpressで作る会員管理システム

本体のコードを変えると…• アップデートごとに当てなければならないパッチ

• そして当たらなくなるパッチ

• (もういいや…、アップデートは諦めよう)

Page 40: Word bench富山4月富山市 wordpressで作る会員管理システム

本体への改変

イコール

地獄の第⼀一歩(確信)

Page 41: Word bench富山4月富山市 wordpressで作る会員管理システム

それにしても• 本体改変 => アップデートできなくなる

• どこかで聞いたような…

Page 42: Word bench富山4月富山市 wordpressで作る会員管理システム

テーマ

⼦子テーマ

Page 43: Word bench富山4月富山市 wordpressで作る会員管理システム

⼦子テーマを使うと• ⼦子テーマには親テーマとの差分のみを記述する

• 書き換えた箇所以外のアップデートであればそのままでおk

Page 44: Word bench富山4月富山市 wordpressで作る会員管理システム

本体のコードでも同じ事ができないだろうか…

Page 45: Word bench富山4月富山市 wordpressで作る会員管理システム

できます!

Page 46: Word bench富山4月富山市 wordpressで作る会員管理システム

アクションフック

Page 47: Word bench富山4月富山市 wordpressで作る会員管理システム

アクションフック(フィルター)

• WordPressで決められた箇所で、特定の処理を⾏行いますよーって宣⾔言されたもの

• the_contentを呼び出すときにはthe_contentってフィルターを呼びますよ

• じゃぁ僕the_contentへ全部富⼭山弁にするフィルター書いちゃおう 的な

Page 48: Word bench富山4月富山市 wordpressで作る会員管理システム

アクションフック(フィルター)• フックやフィルターの箇所

• API

• API⼀一覧は公開されてます

Page 49: Word bench富山4月富山市 wordpressで作る会員管理システム

が、ORDERBYは無い

Page 50: Word bench富山4月富山市 wordpressで作る会員管理システム

APIが無い…

• 年々APIの数は増えているけれども、要望の少ない箇所、処理がフクザツな箇所はAPIが無い

• orderbyとかかなり内部的な所なのでAPI無し

Page 51: Word bench富山4月富山市 wordpressで作る会員管理システム

でもここで負けてらんない

Page 52: Word bench富山4月富山市 wordpressで作る会員管理システム

(数⽇日前)

古川さん「ここ並び変えさせたいけどできる?⼤大変かな?」

ぼく「⼤大丈夫ですよ古川さん、僕WORDPRESSの事ならだいたいなん

でもできます」

Page 53: Word bench富山4月富山市 wordpressで作る会員管理システム

⾏行った⼿手前、後には引けない

Page 54: Word bench富山4月富山市 wordpressで作る会員管理システム

会員番号 ⼊入会年⽉月⽇日1 2010-10-10

2 1999-07-01

15 2011-03-03

30 2014-04-01

1992-02-02

2008-01-01

2002-07-28

2012-08-15

空欄はnull

Page 55: Word bench富山4月富山市 wordpressで作る会員管理システム

会員番号 ⼊入会年⽉月⽇日1 2010-10-10

2 1999-07-01

15 2011-03-03

30 2014-04-01

1992-02-02

2008-01-01

2002-07-28

2012-08-15

空欄はnull

ここを

Page 56: Word bench富山4月富山市 wordpressで作る会員管理システム

会員番号 ⼊入会年⽉月⽇日1 2010-10-10

2 1999-07-01

15 2011-03-03

30 2014-04-01

1992-02-02

2002-07-28

2008-01-01

2012-08-15

空欄はnull

こうしたい

Page 57: Word bench富山4月富山市 wordpressで作る会員管理システム

改めて問題は• 本体を書き換えればorderbyできる

• でも書き換えると運⽤用に⽀支障(ずっとパッチ or アップデート不可)

• 専⽤用のプラグインを作って呼び出す

• それはコスト(⽇日数 = お⾦金)がかかる

Page 58: Word bench富山4月富山市 wordpressで作る会員管理システム

ということで• 本体を書き換えつつ

• アップデートに耐えられる仕様

Page 59: Word bench富山4月富山市 wordpressで作る会員管理システム

メソッドオーバーライド

Page 60: Word bench富山4月富山市 wordpressで作る会員管理システム

メソッドオーバーライド• クラスのメソッドを上書きする機能

• クラスの他の部分には影響を与えない

• => アップデートに強い

Page 61: Word bench富山4月富山市 wordpressで作る会員管理システム

やってみた• WP_Queryクラスを継承したMy_WP_Queryクラスを作成

• parse_orderbyというメソッドを上書き

• 使う箇所ではMy_WP_Queryのインスタンスを利⽤用

Page 62: Word bench富山4月富山市 wordpressで作る会員管理システム

会員番号 ⼊入会年⽉月⽇日1 2010-10-10

2 1999-07-01

15 2011-03-03

30 2014-04-01

1992-02-02

2002-07-28

2008-01-01

2012-08-15

空欄はnull

Page 63: Word bench富山4月富山市 wordpressで作る会員管理システム

ばっちり!

Page 64: Word bench富山4月富山市 wordpressで作る会員管理システム

実際には• metakeyを⼆二つ使うにはテーブルを⼆二つjoinする必要がある

• 独⾃自のキーワードだけに反応

• ‘orderby’ => array(‘meta_key’ => ‘member_code’);

• とかを

• ‘orderby’ => array(‘my_metakey’ => ‘something’);

• にする

Page 65: Word bench富山4月富山市 wordpressで作る会員管理システム

使うにあたって• 本体のソースコードを注意深く読む

• デーブル構成を把握する

• ⽣生成されるSQLを把握する

• debugbar最⾼高

• 努⼒力あるのみ

Page 66: Word bench富山4月富山市 wordpressで作る会員管理システム

振り返って• メソッドオーバーライド⾃自体はそんなにスゴイテクニックじゃ無い

• でもWordPressだと情報が少なし

• WordPress以外、PHP以外にも⼿手を広げると良いことあるよ

Page 67: Word bench富山4月富山市 wordpressで作る会員管理システム

振り返って• WordPress以外のシステムも使ってみると良い

• フレームワークとか

• フルスクラッチ開発をすると基礎が⾝身につく

• DBばかりに注⼒力するのもよし

Page 68: Word bench富山4月富山市 wordpressで作る会員管理システム

でも• ⼤大変なシステムは丸投げでおk

• エンジニアがフヒヒとか⾔言ってやってくれる

• WordBenchには豊富な⼈人材が揃っています

Page 69: Word bench富山4月富山市 wordpressで作る会員管理システム

最後に• WordPressでも⼗十分システム開発できるよ

• WordPressなら開発早いよ

• WordPressで挫けそうな時でも頑張ればなんとかなったりするよ

• それでもダメなら⼈人に頼ろう

Page 70: Word bench富山4月富山市 wordpressで作る会員管理システム

お疲れ様でした