WordPressのカスタマイズやテーマファイル、プラグインの作り方などデータベース構造から詳しく解説します。

これからWordPressを学ぶ方へ伝えたい4つのこと

2015.03.07

はじめに

個人用のブログやメディアサイトを自分のドメインで運用したい、CMS機能をもったコーポレートサイトを作成したい、といったケースで利用されることの多いWordPress。
その利点と学ぶ上でのポイントをご紹介します。

WordPressで開発をするメリットと注意点

WordPressで開発をする上での最大のメリットは豊富なプラグインと高性能な管理画面およびユーザー管理機能にあると思います。

高性能な管理画面とユーザー管理

記事投稿画面や画像のリサイズ、自動下書き保存やリビジョン管理などゼロから開発するとなると骨の折れる機能が全て標準で搭載されているのは大きな魅力です。
またユーザー管理についてはデフォルトで購読者、寄稿者、投稿者、編集者、管理者など5パターンのロールが用意されていますが、
これらも50近い細かい権限の組み合わせで実装されていて、独自の権限を組み合わせたユーザーロールの作成なども気軽に行えます。

メディア運営に活用出来る豊富なプラグイン

Railsでもgemとして様々な周辺機能のライブラリが提供されていますが、メディア/ブログサイト運営という目的において必要となるであろう機能はWordPressのプラグインの方が充実しているイメージです。
また、Railsは多少なりともプログラミングを理解している人でなければ触りづらいのに対して、WordPressは全くの初心者でもコードを編集する必要なく気軽に利用出来る点も優れています。

WordPressはMVCモデルではなくイベント駆動型

MVCモデルとRails

最近Webサービス開発で用いられるフレームワークはMVCモデルを用いて設計されていることが多いです。
MVCモデルとはざっくり説明するとWebアプリケーションを開発する際に、一つのファイルにごちゃっとコードを記述してしまうのではなく、【ユーザーへの表示内容を決める(view)】、【ユーザーから受け取ったパラメーターごとに表示内容を変える(controller)】、【データベースとのやりとり(model)】の3つにファイルを分割して、それぞれ適切な場所に記述をする、という設計のことです。
これにより開発者の意思がコードに反映されやすくなるほか、チームで開発する際にもシステム全体への見通しを立てやすくなります。
Railsではルーティング(各URLごとのファイルの割当)を比較的自由に設定出来るため、ルーティングにあわせてコントローラー、ビュー、モデルを記述して行くというように直感的で自由度の高い開発を行えます。

WordPressはイベント駆動型

一方WordPressではMVCモデルではなくイベント駆動型の設計を採用しています。
処理の実行される一連の流れのなかで様々なイベントがデフォルトで設定されていて、自分が編集を加えたいタイミングで発火するイベントを選択し、その時に実行したい関数を自分で作成してイベントとヒモづける、という形で開発を行うということです。
例えばWordPressのテーマファイルに含まれるheader.phpの中では必ずwp_head()という関数を記述しなければなりません。
wp_head()という関数の中では’wp_head’というイベントが発火されていて、WordPressの様々な処理がこのイベントをフックする(ヒモづけられる)ことで実装されていますので、もしwp_head()を記述しないと正常な処理が行われずバグ発生の原因となります。
WordPressはもともとブログサイトとして使用されることを目的としたフレームワークなので、メインのシナリオを勝手に書き換えられてしまうと全体としての整合性がとれなくなる可能性があります。
そのため、MVCのように自由度の高い設計ではなく、イベント駆動型を採用しているのです。

メディアサイト以外では他のフレームワークがおススメ

WordPressのデフォルト機能をカスタマイズすることで、会員登録必須のWebアプリケーションを作成することはできますし、SNSのようなアプリケーションの構築も可能です。
しかし、イベント駆動型という性質上デフォルトのシナリオをきちんと理解する必要があり、相応の学習コストが存在します。
また、実際には利用しない機能が存在することになる可能性もあり、メモリやディスクを余計に消費するという事態も起こりえます。
私としては、ブログやメディア機能を中心としたWebアプリケーションを運営されるのであればWordPressの利用を検討されることをお勧めしますが、それ以外のケースではRailsなどその他のフレームワークのご利用をおススメします。

WordPressを学ぶ上で抑えておくべきポイント

テーマファイルの構成

一般的に”WordPressで開発を行う”という際には独自のテーマファイルを作成して、独自のデザインを適用したWebサイトを構築する、というニュアンスになります。
そのため各テンプレートファイルとトップページや投稿ページといった各構成要素との対応関係をつかむことがまずは大切です。
その際にはthe_post()the_content()のような基本的な関数の挙動も理解するようにしましょう。

データベース構造

WordPressのデータベース構造を把握すると、新しい機能を実装しようと思ったときにどんなデータを利用出来るのか、あるいは追加で用意しなければならないのかの見通しが立つようになります。
codexにER図があるので、そちらを参考にするとよいでしょう。

wpdb,postなど頻出クラスの関数

基本的にはwpdbクラスpostクラスを通じてデータベースとのやりとりを実装し、カスタマイズしたいタイミング周辺で発生するイベントを探して来てフックする、という実装をすることになります。
例えば「記事ページに所属カテゴリの記事を5つ取得して、関連記事として表示したい」という際には、デフォルトで用意されている関数を利用するか、もしくはwpdbクラスを通じてクエリを発行し、返り値をループで表示する、という処理を実装することになります。
実際に開発で多用するのはwpdbクラスですので、wpdbクラスの使い方を理解すると一気に開発が進みます。

おわりに

いかがでしたでしょうか?ブログやメディアサイトを構築する上で強力な武器となるWordPress。設定次第では十分なレスポンス速度を引き出すことも可能なので、プログラミング初心者でこれからメディアサイトを運営されたいという方にはおススメです。

関連記事

ページ上部へ戻る