はじめに
他言語での開発経験があるエンジニアが初めてWordPressを触るときの勘所
少し前になりますが、WordPressで開発されたWebサイトのテーマをリニューアルするお仕事をしました。
PHPやWordPressの開発経験はほぼ0でしたが、多少なりとも他言語での開発経験があったので、基本的なPHPの文法はすぐにキャッチアップできました。一方、フレームワークであるWordPressの方は、どくとく(?)な特徴(癖)を理解するまで少し時間がかかってしまいました。
初めてWordPressの開発をするときにどんなところを理解しておけばよいか、まとめてみます。
この記事の目標
- 他言語で開発経験がある人が、はじめてWordPressを触るときの勘所をまとめる
- 読者が勘所を理解することで、僕のように変な実装をしないですむようになればいいな
想定読者
- C#/Java/Pythonなど、なんでもいいので、他の言語での開発経験はそれなりにある方
- WordPressはなんとなく知っているレベルの方(WordPress?ブログやるやつだよね、レベルの方)
※ まぁ当時の私ですね
WordPressを触る上での基本的な勘所
- カスタム◯◯
- テンプレート階層
- フィルターとアクション(フック)
- WordPressループ
カスタム◯◯
「WordPressをデフォルトのまま使う」場合はともかく、少しいじってくるとたいてい「カスタム◯◯」という言葉に出くわします。◯◯にはいる言葉も馴染みのないのでわかりにくいですが、よく使うので理解しておくと良いと思います。
次のテンプレート階層にも関連してきます。
post = 投稿・固定ページ等と思ってください
名前 | 説明 |
---|---|
カスタムタクソノミー | タクソノミーは、タグやカテゴリといった投稿を分類する概念です。カスタマイズすることで、自動車や花といった分類ができるようになります |
カスタムフィールド | デフォルトでは、タグやカテゴリ、などしか記事に付随する情報はありません。カスタムフィールドを定義することで、記事に付随する情報を増やすことができます。 |
カスタム投稿タイプ | デフォルトでは、postは投稿と固定ページしかありません(※)。カスタム投稿タイプを定義することで、新しいpostを定義することができます。 |
※話を簡単にするためにはっしょっています。正確には違います。
テンプレート階層
WordPressはブラウザから渡ってきたURLを解析して、自動的に表示するPHPファイル(テンプレートファイル)を決定してくれます。
会社情報(/companyでアクセスする)といった固定ページがあった場合、
- page-{slug}.php
- page.php
- index.php
という順番に自動的にページを探してくれます。
何が便利かというと、postとURLが決まれば勝手にファイルは決まるので、URLに応じて分岐処理を書く必要がなくなります。
フィルターとアクション(フック)
WordPressのカスタマイズは、WordPressの機能を拡張していくことにほかなりません。
フィルターであれば、apply_filtersでフックされるポイントを定義しておき、add_filterで追加された関数を呼びだします(複数追加可能)。
プラグインを作成するうえで、WordPressのどの処理にフックをかけるかが重要なポイントになります。
一応日本語サイトもあるのですが、いかんせん翻訳されていないものや、情報が古いものがあります。ここはおとなしく英語サイトにいきましょう。
- アクション一覧:https://codex.wordpress.org/Plugin_API/Action_Reference
- フィルター一覧:https://codex.wordpress.org/Plugin_API/Filter_Reference
なお、フィルターとアクションは、返り値があるかないかです。
WordPressループ
DBにアクセスし、データを取得するといった機能を実現する場合、何も考えないとDBへのコネクションをはって、DBからデータをとって、複数データがある場合はループして…といった処理を書きがちです。
var connection = new DBConnection();
var sql = "SELECT name FROM nanchara_db WHERE ...";
var persons = connection.exec(sql);
foreach(persons as person){
// ...処理...
}
※なんかいろいろごっちゃですが、イメージとして捉えてもらえれば…
WordPressはフレームワークということも有り、DBへのアクセスを隠蔽してくれます。(こんな感じに)。
なれないと、これなにやっているねん?となります。が、よく使うので自然と覚えてくると思います。
<?php
if ( have_posts() ) {
while ( have_posts() ) {
the_post();
//
// 投稿がここに表示される
//
} // end while
} // end if
?>
参考:https://wpdocs.osdn.jp/%E3%83%AB%E3%83%BC%E3%83%97
おわりに
WordPressがフレームワークということもあり、そのあたりの知識をキャッチアップできれば、だいぶ理解が進むと思います。
あとは、一度テーマやプラグインを開発してみるのが、理解の一番の近道かと
次にどんなことを学べばよいか?
勉強中であれですが、よりWordPressに突っ込んでいくのであれば次のようなことを学んで行けば良いのではないでしょうか。(順不同)
- WordPressのデータベース
- プラグイン開発