WP-CLIのスキャフォルドを使う

スキャフォルド、Ruby on Railsとか他のWEBフレームワークでお馴染みのものです。 WordPressはコアでなくWP-CLIで提供されています。

投稿タイプとタクソノミーを作るのは、一から書いても流用しても割と手間のかかるものですが、WP-CLIのスキャフォルドを使うと素早く雛形が作れます。

この記事では主に下記3つのスキャフォルドの説明をします。

あと、Gutebergブロックのスキャフォルドもできます。

今回、WP-CLIのインストール方法は割愛します。

プラグインのスキャフォルド

まずカスタム投稿タイプやタクソノミー、カスタムフィールドを設定するプラグインを用意します。

wp scaffold plugin add_post_type --skip-tests

オプションでプラグイン名を予めセットしたり色々機能がありますが、プラグインとして最低限動けばいいのでテストユニットもなし、スラッグだけ設定します。
投稿タイプ、タクソノミーを設定するぐらいなら、テストユニットはおそらく出番がないです。

これで、add_post_typeというプラグインの雛形ができました。

投稿タイプのスキャフォルド

投稿タイプの定義はテーマとプラグインのどちらでも行えますが、今回はプラグインで行います。
サンプルとして「プログラミング言語」という投稿タイプを作ります。

wp scaffold post-type language --label="programing language" --plugin=add_post_type

add_post_type プラグインフォルダ内に post_types フォルダと language.php が生成されました。

プラグインの add_post_type.php は空っぽなので、生成した language.phpを読み込むよう実装。

require_once dirname( __FILE__ ) . '/post-types/language.php';

プラグインを有効にすると投稿タイプ「プログラミング言語」が使えます。

表示文言とか全部、テキストドメインを利用する多言語対応の形式で設定されています。
日本語表示にしたい場合はpo/moファイルを作るか、こんな感じで書き換えても表示されます。
上記画面では、このように書き換えてテキストドメインを利用せずに日本語表示をしています。

タクソノミーのスキャフォルド

先に実行したのと同様に「プログラミング言語」投稿タイプに「型付け」タクソノミーを設定してみます。

wp scaffold taxonomy typing --post_types=language --label="typing" --plugin=add_post_type

投稿タイプと同様にadd_post_type.phpにtyping.phpを読み込むように記述します。

require_once dirname( __FILE__ ) . '/tasonomies/typing.php';

注意 予約語について

タクソノミーなどに使える単語には制約があります。

WordPressの予約語
WordPressコアが提供する機能に重複するスラッグを使うとエラーが発生したりレスポンスが404になります。
今回は「typing」なので問題ありませんが、「型だからスラッグは『type』にしよう」とやるとエラーで動きません。
タクソノミーには予約語があることは念頭に入れておくと良いでしょう。

「プログラミング言語」投稿タイプを使う

下記のようにタクソノミーの階層性を True にすると「投稿」に対する「カテゴリー」のように扱えます。

'hierarchical' => true

「プログラミング言語」投稿タイプと「型付け」タクソノミーを利用した投稿サンプルです。テーマはWordPress 5.4デフォルトのTwentyTwentyです。

このように投稿タイプとタクソノミーの設定が素早く確実にできます。
数多くの設定項目やラベルをコマンド1つでセットしてくれるのは便利です。

ぜひスキャフォルドを活用してください。