PHP のコードスタイル
Prettier による PHP の自動整形と、WordPress の慣習に合わせた命名、テンプレートでの PHP の書き方
PHP の整形は Prettier に任せ、命名などの整形以外のルールは WordPress の慣習に合わせます。
自動整形
wp-env-starter では、PHP も CSS・JavaScript と同じく Prettier(@prettier/plugin-php)で整形します。
設定はテンプレートの .prettierrc.json にあり、インデントは半角スペース 2 つ、文字列はダブルクォートです。
整形はコミット時に lefthook が自動で実行します。
push 前には pnpm lint で、整形漏れがないことを確認してください。
命名
命名は WPCS に合わせます。
| 対象 | 形式 | 例 |
|---|---|---|
| 関数・変数 | スネークケース | theme_enqueue_assets()、$post_id |
| クラス | 単語の先頭を大文字にしてアンダースコアでつなぐ | Theme_Menu_Walker |
| 定数 | 大文字のスネークケース | VITE_DEV_ORIGIN |
| ファイル | 小文字のケバブケース | post-types.php |
| 独自のフック名 | 小文字のスネークケース | theme_before_footer |
| CSS・JavaScript のハンドル名 | 小文字のケバブケース | theme-script |
テーマで新しく定義する関数には、theme_ の接頭辞を付けます。
WordPress の関数はグローバル空間で定義されるため、接頭辞がないとプラグインの関数と名前が衝突し、致命的なエラーになる場合があります。
テンプレートでの書き方
HTML と PHP の切り替え
HTML を出力するテンプレートでは、制御構文にコロンを使う代替構文を使います。
波括弧だと、どの } がどの if や foreach を閉じているのかを HTML の中で追いにくくなるためです。
<?php if (have_posts()): ?>
<ul class="post-list">
<?php while (have_posts()): the_post(); ?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
ロジックとマークアップの分離
値の取得や加工はテンプレートの先頭(またはヘルパー関数)でまとめて行い、HTML の中では変数を出力するだけにします。 HTML の中に条件分岐や関数呼び出しが入り組むと、表示崩れの原因を探しにくくなるためです。
出力時のエスケープ
変数を出力するときは、必ず出力先に合ったエスケープ関数を通します(セキュリティ)。