word bench富山4月富山市 wordpressで作る会員管理システム
TRANSCRIPT
![Page 1: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/1.jpg)
WORDPRESSで作る会員管理システム
マルチメディア⼯工房 陽
![Page 2: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/2.jpg)
とある学会の会員管理• 1000⼈人弱の会員を管理する
• 年に1〜~2度発⾏行物がある
• 年会費の⼊入⾦金処理がある
• 担当者は⼀一⼈人 ←
![Page 3: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/3.jpg)
とある学会の会員管理• 1000⼈人弱の会員を管理する
• 年に1〜~2度発⾏行物がある
• 年会費の⼊入⾦金処理がある
• 担当者は⼀一⼈人 ← 担当者は⼀一⼈人 ←
![Page 4: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/4.jpg)
担当者は⼀一⼈人
![Page 5: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/5.jpg)
しかも本業は別
![Page 6: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/6.jpg)
( ゜Д゜)ポカーン
![Page 7: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/7.jpg)
とある学会の会員管理• 1000⼈人弱の会員を管理する
• 年に1〜~2度発⾏行物がある
• 年会費の⼊入⾦金処理がある
• 担当者は⼀一⼈人
• それをエクセルで ←
![Page 8: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/8.jpg)
とある学会の会員管理• 1000⼈人弱の会員を管理する
• 年に1〜~2度発⾏行物がある
• 年会費の⼊入⾦金処理がある
• 担当者は⼀一⼈人
• それをエクセルで ← それをエクセルで ←
![Page 9: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/9.jpg)
それをエクセルで
![Page 10: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/10.jpg)
( ゜Д゜)ポカーン
![Page 11: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/11.jpg)
そこで⼀一⼈人の漢(オトコ)が⽴立ち上がった
![Page 12: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/12.jpg)
古川 陽⼀一
![Page 13: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/13.jpg)
こうして僕たちの戦いが始まったのだった
![Page 14: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/14.jpg)
第⼀一部 完
つづく
![Page 15: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/15.jpg)
改めて• エクセルで会員管理
• 会員数は1000⼈人弱
• 年次処理(⼊入会、退会、休会、⼊入⾦金)アリ
• 住所に向けて発⾏行物あり
![Page 16: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/16.jpg)
エクセルは便利だけど…• エクセル != システム
• エクセル != データベース
![Page 17: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/17.jpg)
エクセルで管理すると…• あちこちでフォーマットがぐちゃぐちゃ
• どの項⺫⽬目を列挙するか定まらない
• いわゆるモデリングができていない
• データがどこにあるか分からない
![Page 18: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/18.jpg)
エクセルで管理すると…• ⼊入⼒力が⼤大変
• でもオートフィルは便利
• 履歴の管理不可
• 複数⼈人運⽤用不可
![Page 19: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/19.jpg)
古川さんの提案したこと• Webシステムで作る
• データベースで管理
• 帳票とかの出⼒力が可能
• 絞り込み検索可能
•いわゆる会員管理システム
![Page 20: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/20.jpg)
会員管理システム• システム業界では良くある事例
• 顧客だったり、製品だったり、商品だったり
• ○○管理システム
• 帳票とかもよく必要とされる
![Page 21: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/21.jpg)
帳票 って皆さんご存じです?• 業務に関わる書類のこと
• ⾒見積書、請求書、給与明細、⼀一覧表など
• 例1) 三⽉月に仕⼊入れた品物⼀一覧
• 例2) 当⽉月の全社員分の給与明細
![Page 22: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/22.jpg)
昔からあるシステム• 30年ほど前
• オフコン、DB2、COBOL…
• 15年ほど前
• VBA、Access…
• 最近だと
• Webでの管理システム
![Page 23: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/23.jpg)
WEBでの管理システム• ブラウザで操作可能
• 昔はそうじゃなかった!
• パソコンを限定されない
• 複数⼈人アクセス可能
![Page 24: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/24.jpg)
会員管理システムって何が必要?• 1000⼈人ほど会員がいて
• 会員には名前とか住所とかの属性があって
• 会員ごとに絞り込みとかかけて
• 印刷したい
![Page 25: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/25.jpg)
うーん⼤大変そうだなぁ…
![Page 26: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/26.jpg)
あれ?でもこれWORDPRESSで⾏行けそうじゃん?
![Page 27: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/27.jpg)
会員管理システムって何が必要?• 会員ごとに絞り込みとかかけて
• => WP_Queryとか
• 印刷したい
• => テーブルレイアウトとCSS
![Page 28: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/28.jpg)
会員管理システムって何が必要?• 1000⼈人ほど会員がいて
• => カスタム投稿タイプ
• 会員には名前とか住所とかの属性があって
• => カスタムフィールド
![Page 29: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/29.jpg)
いける!
![Page 30: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/30.jpg)
WORDPRESSなら• ログイン周りOK
• 編集画⾯面OK
• テーマあるから流⽤用できちゃう
• 並び変えとかも結構できちゃう
![Page 31: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/31.jpg)
というわけでWORDPRESSでの開発を
決めました
![Page 32: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/32.jpg)
第⼆二部 完
つづく
![Page 33: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/33.jpg)
第三部
こんなのできました
![Page 34: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/34.jpg)
作ってみたまとめ• ⽤用意されてる機能が豊富なので早い
• フルスクラッチ開発(ゼロから開発)するより圧倒的に早い
• カスタム投稿タイプとかそれなりにつくってくれる
![Page 35: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/35.jpg)
第四部
開発で使ったテクニック
![Page 36: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/36.jpg)
問題• postmetaで並び変えしたい
• しかも複数のキーで並び変えしたい
• 例) 会員番号 + ⽣生年⽉月⽇日
![Page 37: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/37.jpg)
ぶっちゃけ• ⽣生のSQLなら余裕なのに…
• ORDER BY meta1 DESC, meta2 ASC など
• WordPressで⽤用意されているorderby
• metakeyは⼀一つだけ
![Page 38: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/38.jpg)
ソースコードを⾒見てみると• 本体のコードだとmeta_key⼀一つしか来ない前提のコード
• 書き換えたい衝動に駆られる
![Page 39: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/39.jpg)
本体のコードを変えると…• アップデートごとに当てなければならないパッチ
• そして当たらなくなるパッチ
• (もういいや…、アップデートは諦めよう)
![Page 40: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/40.jpg)
本体への改変
イコール
地獄の第⼀一歩(確信)
![Page 41: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/41.jpg)
それにしても• 本体改変 => アップデートできなくなる
• どこかで聞いたような…
![Page 42: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/42.jpg)
テーマ
⼦子テーマ
![Page 43: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/43.jpg)
⼦子テーマを使うと• ⼦子テーマには親テーマとの差分のみを記述する
• 書き換えた箇所以外のアップデートであればそのままでおk
![Page 44: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/44.jpg)
本体のコードでも同じ事ができないだろうか…
![Page 45: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/45.jpg)
できます!
![Page 46: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/46.jpg)
アクションフック
![Page 47: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/47.jpg)
アクションフック(フィルター)
• WordPressで決められた箇所で、特定の処理を⾏行いますよーって宣⾔言されたもの
• the_contentを呼び出すときにはthe_contentってフィルターを呼びますよ
• じゃぁ僕the_contentへ全部富⼭山弁にするフィルター書いちゃおう 的な
![Page 48: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/48.jpg)
アクションフック(フィルター)• フックやフィルターの箇所
• API
• API⼀一覧は公開されてます
![Page 49: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/49.jpg)
が、ORDERBYは無い
![Page 50: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/50.jpg)
APIが無い…
• 年々APIの数は増えているけれども、要望の少ない箇所、処理がフクザツな箇所はAPIが無い
• orderbyとかかなり内部的な所なのでAPI無し
![Page 51: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/51.jpg)
でもここで負けてらんない
![Page 52: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/52.jpg)
(数⽇日前)
古川さん「ここ並び変えさせたいけどできる?⼤大変かな?」
ぼく「⼤大丈夫ですよ古川さん、僕WORDPRESSの事ならだいたいなん
でもできます」
![Page 53: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/53.jpg)
⾏行った⼿手前、後には引けない
![Page 54: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/54.jpg)
会員番号 ⼊入会年⽉月⽇日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で作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/55.jpg)
会員番号 ⼊入会年⽉月⽇日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で作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/56.jpg)
会員番号 ⼊入会年⽉月⽇日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で作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/57.jpg)
改めて問題は• 本体を書き換えればorderbyできる
• でも書き換えると運⽤用に⽀支障(ずっとパッチ or アップデート不可)
• 専⽤用のプラグインを作って呼び出す
• それはコスト(⽇日数 = お⾦金)がかかる
![Page 58: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/58.jpg)
ということで• 本体を書き換えつつ
• アップデートに耐えられる仕様
![Page 59: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/59.jpg)
メソッドオーバーライド
![Page 60: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/60.jpg)
メソッドオーバーライド• クラスのメソッドを上書きする機能
• クラスの他の部分には影響を与えない
• => アップデートに強い
![Page 61: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/61.jpg)
やってみた• WP_Queryクラスを継承したMy_WP_Queryクラスを作成
• parse_orderbyというメソッドを上書き
• 使う箇所ではMy_WP_Queryのインスタンスを利⽤用
![Page 62: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/62.jpg)
会員番号 ⼊入会年⽉月⽇日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で作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/63.jpg)
ばっちり!
![Page 64: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/64.jpg)
実際には• metakeyを⼆二つ使うにはテーブルを⼆二つjoinする必要がある
• 独⾃自のキーワードだけに反応
• ‘orderby’ => array(‘meta_key’ => ‘member_code’);
• とかを
• ‘orderby’ => array(‘my_metakey’ => ‘something’);
• にする
![Page 65: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/65.jpg)
使うにあたって• 本体のソースコードを注意深く読む
• デーブル構成を把握する
• ⽣生成されるSQLを把握する
• debugbar最⾼高
• 努⼒力あるのみ
![Page 66: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/66.jpg)
振り返って• メソッドオーバーライド⾃自体はそんなにスゴイテクニックじゃ無い
• でもWordPressだと情報が少なし
• WordPress以外、PHP以外にも⼿手を広げると良いことあるよ
![Page 67: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/67.jpg)
振り返って• WordPress以外のシステムも使ってみると良い
• フレームワークとか
• フルスクラッチ開発をすると基礎が⾝身につく
• DBばかりに注⼒力するのもよし
![Page 68: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/68.jpg)
でも• ⼤大変なシステムは丸投げでおk
• エンジニアがフヒヒとか⾔言ってやってくれる
• WordBenchには豊富な⼈人材が揃っています
![Page 69: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/69.jpg)
最後に• WordPressでも⼗十分システム開発できるよ
• WordPressなら開発早いよ
• WordPressで挫けそうな時でも頑張ればなんとかなったりするよ
• それでもダメなら⼈人に頼ろう
![Page 70: Word bench富山4月富山市 wordpressで作る会員管理システム](https://reader031.vdocuments.site/reader031/viewer/2022032618/55b80f8bbb61eb92268b4577/html5/thumbnails/70.jpg)
お疲れ様でした