WordPressのプラグインをMVCで作成する

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.

その他候補としては、スターが多い以下のものを見てみてたのですが、一見してファイル構成が分かりづらく不採用となりました。

フォルダ構造

    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のプラグイン作成は、
個人開発にはいい選択肢だと思いました。

コメント