[WordPress]開発するときに覚えておきたい事項まとめ(備忘録)

2019年12月15日

転職してしばらくWordPressには触れないため、基本事項をあとで確認できるようにまとめておく。
wp-contentの下にテーマやプラグインがあって、、みたいな超基本的なとこは除く

WordPressのテンプレート階層

WordPressはリクエストされたURLに応じて、下記のテンプレート階層をもとに表示するページを決定する。

固定ページであれば、

  1. 固定ページで個別に設定したテンプレート
  2. page-slug.php
  3. page.php
  4. index.php

といった優先順位で読み込まれる(上記は一部省略)。

詳しくはWordPress.org参照

https://developer.wordpress.org/themes/basics/template-hierarchy/

また、上記の1~4よりもファイルやフォルダがあればそちらが優先される。

.htaccessには以下のように記述されている。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

6, 7行目の部分でファイルの存在を確認し、なければindex.phpが読み込まれて、WordPressのテンプレート階層通りの優先順位でテーマファイル内の該当ファイルが読み込まれる。

※ここのindex.phpはドキュメントルートのindex.phpであり、テンプレート階層のindex.phpはテーマファイル内のindex.phpを指している。

テーマファイルの作り方

いつか書く。wp_head, wp_footerを忘れないように注意すること。

データベース構造

ER図はWordPress Codexで確認できる。

WordPressは最初からテーブルがたくさん用意されているので、基本的に自分で設計するということはない。

カテゴリやタグはwp_termsに保存されていて、wp_term_relationshipsでwp_posts(記事)との紐付け、wp_term_taxonomyでカテゴリやタグの分類を行っている。

wp_optionsテーブルにsiteurl, homeurlが設定されていて、それをベースにサイト内のリンクが生成されているため、環境が変わった際にはここを置換する必要がある。SRDBというツールがオススメ。

管理画面にいろいろ機能を追加する際は、wp_optionsにお世話になることが多い。

ただし、wp_optionsテーブルは、EAV (エンティティ・アトリビュート・バリュー)というSQLアンチパターンを思いっきり踏んでいるため、個別記事に対応するようなものはできるだけwp_postmetaを利用しよう。

 

フック(hook)について

WordPressにはあらかじめ便利なフック(hook)がたくさん用意されていて、WordPressの各処理の前に処理を追加することができる。(例えば、管理画面を読み込む瞬間・タイトルを表示する直前)

フックにはactionとfilterが存在する。

action

add_action() でactionを追加し、do_action()で実行する。戻り値がなく、ただ処理を実行するときに使う。

filter

add_filter()で処理を追加し、apply_filter()でフィルターの処理を実行する。apply_filterを使用したときに戻り値がある。

 

 

wp-cron.phpについて

WordPressにはタスクを予約する仕組みとして、wp-cron.phpというものがある。これは実際のcronとは違い、指定した時間を過ぎたあとアクセスがあると実行される。

ページがロードされたときに、タスクがあると実行されるという仕組みなため、Basic認証がかかっているとうまく動かないので注意する。

よく使うプラグイン一覧

自分がよく使ったプラグインをまとめておく。

Advanced Custom Fields, Advanced Custom Fields PRO

通称ACF。PRO版に関しては本当になんでもできる。

繰り返しフィールド・柔軟コンテンツ・管理画面に新たなページ追加など、PHPコードをほとんど書く必要がない。

Custom Post Type UI

通称CPTUI

カスタムフィールド、カスタムタクソノミーを超簡単に作れるプラグイン。

Classic Editor

WordPress5.0から導入された「Gutenberg」を以前のエディターに戻してくれるプラグイン。

All in One SEO Pack

WordPressでSEO対策するならとりあえずこれ

MW WP Form

フォームといえばこれ

 

データベース接続確立エラー

WordPressセットアップするときによくあるエラー、だいたい以下のどれか

  • DBがそもそも作られていない、DBのユーザが設定されてない
  • wp-config.phpに記載するDBのユーザ名、パスワード、ホストなどが間違っている(特にホストに注意)
  • ユーザにDBアクセスの権限がない
  • DBをインポートした場合など、一部必要なテーブルが破損している

.gitignore

githubでチーム開発する際、pushする必要がない(してはいけない)ファイルがいくつかある。

.htaccess

環境によって違うことが多いため。

wp-config.php

DBの情報が書かれているため、これは絶対ignoreしよう。

wp_content/uploads/以下

アップロードされた画像やPDFなどが入る。

その他には、プラグインのログファイルやキャッシュファイルも.gitignoreに追加しておく。