copy_people copy_things copy_matter copy_heart copy_txt ttl_topics ico_blank ico_facebook ico_twitter ico_hatebu ico_index

2018/02/26

wp-cli でテーマ作成

Written by Shunsuke Okoshi

  • Wordpress

INDEX

    先日 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. 【他動】〔建物に〕足場を組む【名】《建築》足場 (出典:英辞郎) 
    CONTACT

    お仕事のご相談や、弊社についてのご質問や
    ご要望など、お気軽にお問い合わせください。

    View