WordPressのプラグインをMVCで作成する情報があまりなかったので、簡単にですがご紹介します。
きっかけ
単一ファイルで書いていたComment Star Ratingが600行を超えて、久々に読んでみたら、どこを修正すればいいか理解に時間がかかったから。
参考にしたプログラム
キタジマタカシさんのMW WP Formをベースにし書き換えました。
inc2734/mw-wp-form
Contribute to inc2734/mw-wp-form development by creating an account on GitHub.
その他候補としては、スターが多い以下のものを見てみてたのですが、一見してファイル構成が分かりづらく不採用となりました。
- GitHub – iandunn/WordPress-Plugin-Skeleton: A WordPress plugin skeleton built using object-oriented principles and the MVC pattern.
- GitHub – DevinVinson/WordPress-Plugin-Boilerplate: [WordPress] A foundation for WordPress Plugin Development that aims to provide a clear and consistent guide for building your plugins.
フォルダ構造
comment-star-rating # ├─ comment-star-rating.php # プラグインメインファイル ├─ classes # クラスファイル │ ├─ abstract # 抽象クラスフォルダ │ ├─ controllers # Controllerフォルダ │ ├─ models # Modelフォルダ │ ├─ services # Serviceフォルダ │ ├─ config.php # 定数クラス │ └─ functions.php # 汎用関数クラス ├─ templates # Viewフォルダ ├─ css # CSS ├─ img # 画像 ├─ js # JavaScript └─ tests # テスト
WordPressでMVCってイメージがなかったのですが、フックをベースにしてコントローラーを作成し、WP_CommentやWP_Postをラップしたモデルを使用すればLaravelのようなFWと同じ感じで扱えました。
Modelの保存はLaravelと同じような記述ができます。
CSR_Post::find( $post_id ) ->set_rating_count( count( $all_ratings ) ) ->set_rating_average( $average ) ->set_ratings( $arranged_ratings ) ->save();
matometaru/comment-star-rating
Wordpress plugin to rate comments on 5 beautiful stars. - matometaru/comment-star-rating
(gitのコミット履歴がひどいのでこちらは改善していきます。。)
まとめ
最初はシングルファイルで作成し、プラグイン申請時、公式の方にコードのレビューをしてもらい公式登録しました。この時もいろいろ学びがありました。
今回はMVCを取り入れリファクタリングを行い、PHP知識の更新、FWについての理解の深まりなどがありました。
PHPの勉強ができ、OSSにプラグインという形で貢献でき、ユーザー数も多いWordPressのプラグイン作成は、
個人開発にはいい選択肢だと思いました。
コメント