ブログ

wp-cli でテーマ作成

Shunsuke Okoshi
Lead Engineer / Director

先日 WP-CLIインストールでも紹介した wp-cli ですが、scaffold1 コマンドが何かと便利そうだったのでまとめてみました。

_s(Underscores)のインストール

弊社ではよく bones のようなテンプレートを使ってWordpressのテーマを作っていたんですが、wp-cliでは _s (Underscores) が使えそうなのでこちらをベースに紹介していきます。

wp scaffold _s で_s のデフォルトテンプレートを呼び出します。

sample_themeというslugの「サンプルテーマ」をSASSデータ付きでインストールして、テーマを有効化する場合は下記のコマンドになります。--authorは製作者名。
Underscores のジェネレーターと同様のオプションが設定できます。

$ wp scaffold _s sample_theme --theme_name="サンプルテーマ" --author="EVOWORX" --sassify --activate
コマンド/オプション 説明
wp scaffold _s <slug> _sのテンプレート呼び出し。slugにはWP内で使用するテーマ名を半角英数で。
--theme_name="<title>" 表示用のテーマ名(日本語可)
--author="<name>" テーマの製作者名
--sassify SASSのデータをテンプレート内に生成
--activate インストール後に即有効化

詳しくは wp scaffold _s

カスタム投稿タイプの追加

wp scaffold post-type でカスタム投稿タイプも簡単に追加できます。

先ほど作成した sample_themeblog というスラッグで「ブログ」というカスタム投稿タイプを作成する場合はこちらのコマンドで。
--theme を指定しない場合は、コードがターミナル内に出力されます(STDOUT)。functions.php にコピー&ペーストする場合は--themeオプションなしで使ってください。

$ wp scaffold post-type blog --label="ブログ" --theme="sample_theme"
コマンド/オプション 説明
wp scaffold post-type <slug> カスタム投稿タイプテンプレート呼び出し。slugは半角英数で。
--label="<title>" カスタム投稿タイプの表示名
--theme="<theme>" 出力先のテーマディレクトリ名

--theme を指定した場合は下記のようなメッセージが表示されます。

Success: Created '/path/to/wp-content/themes/sample_theme/post-types/blog.php'.

無事生成されたら functions.php から
require get_template_directory() . '/post-types/blog.php'; のようにして読み込んでください。

詳しくは wp scaffold post-type

カスタムタクソノミーの追加

上記のカスタム投稿タイプ blog にカテゴリーとタグをカスタムタクソノミーで追加する場合は wp scaffold taxonomy を使います。

まずはタグから。
カスタム投稿タイプ同様 --theme を指定しない場合はターミナル内に出力されます。

$ wp scaffold taxonomy blog_tag --label="ブログのタグ" --post_types="blog" --theme="sample_theme"
コマンド/オプション 説明
wp scaffold taxonomy <slug> カスタムタクソノミープテンプレート呼び出し。slugは半角英数で。
--label="<title>" カスタムタクソノミーの表示名
--post_types="<post_types>" 関連付けたい投稿タイプ名
--theme="<theme>" 出力先のテーマディレクトリ名

詳しくは wp scafflod taxonomy

無事作成できたら下記のようなメッセージが表示されます。

Success: Created /path/to/wp-content/themes/sample_theme/taxonomies/blog_tag.php'.

こちらも投稿タイプ同様に functions.php から読み込みます。
require get_template_directory() . '/taxonomies/blog_tag.php';

カテゴリーもタグの場合とほぼ一緒です。

$ wp scaffold taxonomy blog_category --label="ブログのカテゴリー" --post_types="blog" --theme="sample_theme"

ただし、そのままではカテゴリーとして使用できないので、生成されたコードの hierarchicaltrue に修正してください。

function blog_category_init() {
    register_taxonomy( 'blog_category', array( 'blog' ), array(
        'hierarchical'      => true, //false を trueに変更
        'public'            => true,
        'show_in_nav_menus' => true,
        'show_ui'           => true,
        'show_admin_column' => false,
        'query_var'         => true,
        'rewrite'           => true,
        'capabilities'      => array(
            'manage_terms'  => 'edit_posts',
            'edit_terms'    => 'edit_posts',
            'delete_terms'  => 'edit_posts',
            'assign_terms'  => 'edit_posts'
        ),

以上で _s のインストールとカスタム投稿タイプ、カスタムタクソノミーの追加は完了です。

プラグインのインストール

ちなみに、プラグインのインストールなんかも可能です。
以前弊社ブログでも紹介したCMB2をインストール&有効化するときはこちらのコマンドで。

$ wp plugin install cmb2 --activate
コマンド/オプション 説明
wp plugin install <plugin|zip|url>... インストールしたいプラグイン名を指定します。ローカスのzipファイルの場合はパスを、直接ダウンロードする場合はURLも指定可能です。
--activate インストール後に即有効化

詳しくはwp plugin install

アンインストール

無効化してからアンインストールする場合はこちら。--skip-deleteもつけることでファイルは削除しないでアンインストールもできるようです。

$ wp plugin uninstall cmb2 --deactivate

詳しくは wp plugin uninstall

アップデート

一括でプラグインを更新したい場合は --all をつければ一瞬です。
一括でやるのがちょっと心配な人は --dry-run で一度何が更新されるか確認してからやるのが安全かもしれません。

$ wp plugin update --all

詳しくは wp plugin update


  1. 【他動】〔建物に〕足場を組む【名】《建築》足場 (出典:英辞郎)