Edited at

WP-CLIの使い方

More than 1 year has passed since last update.

WordPressをコマンドから管理出来るツールにWP-CLIがあります。

プラグインのインストールや、ユーザの設定、パーマリンクの設定等が出来ます。

私の場合、ある程度の雛形のWordPressを作成したいときによく使用しています。


何が出来るの?


  • WordPress本体のダウンロード (バージョンなど指定も可能)

  • wp-config.phpファイルの作成 (デバッグモードの有効化なども可能)

  • プラグイン、テーマファイルののインストール、有効化、削除、検索

  • 固定ページ、投稿ページの作成

  • その他いろいろ

今回は、よく使うものなどをまとめてみたいと思います。


インストール方法

まずは wp-cli.phar ファイルをダウンロードします

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

動くかどうか確認後

php wp-cli.phar --info

実行権限を付け、PATHに通します

chmod +x wp-cli.phar

sudo mv wp-cli.phar /usr/local/bin/wp

wp cli version

以上で完了です。

アップグレードも同様の手順で行います。

参考 : WP-CLI Install


よく使われるもの


  • WordPressのダウンロード

wp core download --locale=ja

wp core download --locale=ja --path=/var/www/html/wordpress

pathオプションを指定した場合、特定のディレクトリにWordPressを配置します。

またオプションとしてバージョンなどの指定ができるので公式を参考してください。

参考: WP-CLI wp core download


  • wp-config.phpのセットアップ

wp core config --dbname=wordpress --dbuser=wordpress --dbpass=pass --dbhost=localhost --dbprefix=wordpress_

localhostやprefix値はデフォルトの値が設定されています。

ほかにもデバッグモードの有効方法が公式にあります。

参考: WP-CLI wp core config


  • DBのセットアップ

wp core install --url=http://example.com/ --title=test --admin_user=wordpress_user --admin_password=password --admin_email=test@example.com

以上でWordPressのインストール自体は完了です。

続いてはプラグインインストールやテーマファイルの有効になります。


細かな設定


プラグイン関連

## WordPressプラグイン公式サイトから最新のバージョンがインストールされます

wp plugin install contact-form-7
## インストールと同時に有効化する
wp plugin install contact-form7 --activate
## プラグインのuninstall
wp plugin uninstall contact-form-7

versionオプションを指定する事でdevelopmentバージョンのプラグインをインストールすることや、公式で配布されていないプラグインもURLやパスを指定することでインストール可能だそうです。

インストールしたいプラグインを検索するには、plugin search コマンドを使用します

wp plugin search

参考 : WP-CLI wp plugin

余談ですが、私の場合Capistranoと組み合わせているので下記のように使っています。


deplory.rb

task :plugin_setup do

on roles(:web) do
within deploy_to do
%w{contact-form7 flamingo wordpress-importer wp-members google-sitemap-generator}.each do |plugin|
plugin_install = capture(:wp, "plugin install #{plugin} --activate")
info plugin_install
end
# デフォルトでインストールされるhelloプラグイン削除
%{hello}.each do |plugin|
plugin_uninstall = capture(:wp, "plugin uninstall #{plugin}")
info plugin_uninstall
end
end
end
end


テーマ関連

wp theme enable twentyeleven

plugin コマンドと同様なことが可能です。

参考 : WP-CLI wp theme


xmlファイルのインポート

wp import wordpress.xml --authors=create

参考 : WP-CLI wp import


パーマリンクの設定

wp rewrite structure '%postname%'

参考 : WP-CLI wp rewrite


ウィジェット関連

WordPressインストール時には、デフォルトで検索や最近の投稿などがセットされていますがコマンドで削除することができます。

## 特定のウィジェットに登録されているものを表示

wp widget list sidebar-1
+-----------------+-------------------+----------+------------------------------------------------------+
| name | id | position | options |
+-----------------+-------------------+----------+------------------------------------------------------+
| search | search-2 | 1 | {"title":""} |
| recent-posts | recent-posts-2 | 2 | {"title":"","number":5} |
| recent-comments | recent-comments-2 | 3 | {"title":"","number":5} |
| archives | archives-2 | 4 | {"title":"","count":0,"dropdown":0} |
| categories | categories-2 | 5 | {"title":"","count":0,"hierarchical":0,"dropdown":0} |
| meta | meta-2 | 6 | {"title":""} |
+-----------------+-------------------+----------+------------------------------------------------------+
## 必要のないものを削除
wp widget delete sidebar-1 search-2
## 使用停止中のウィジェットに登録
wp widget deactivate search-2


個人設定関連

個人設定を変更するには option コマンドを使用します。


  • ビジュアルリッチエディターを無効にする

wp option update rich_editing false


  • サイトを見るときにツールバーを非表示する

wp option update show_admin_bar_front false


  • 管理画面の色を変更する

wp option update admin_color light


  • パーマリンクの変更2つ目?

wp option update permalink_structure /%postname%/

などなど、スクリーンショット 2014-10-05 16.45.27.png

テーブルのmeta_keyで検索を行い、meta_valueをupdateします


その他

WP-CLIは、WordPressのインストールや変更だけを行うコマンドではありません。

wp scaffold コマンドで、スターターテーマや、カスタム投稿タイプ、カスタムタクソノミーのソースコードを生成することが可能です。


  • スターターテーマ作成

_sというWordPressのスターター・テーマを使い、オリジナルのテーマ開発を行う事が出来ます。

## origin というテーマファイルを作成する

wp scaffold _s origin

├── 404.php

├── README.md
├── archive.php
├── comments.php
├── content-none.php
├── content-page.php
├── content-search.php
├── content-single.php
├── content.php
├── footer.php
├── functions.php
├── header.php
├── inc
├── index.php
├── js
├── languages
├── layouts
├── page.php
├── rtl.css
├── screenshot.png
├── search.php
├── sidebar.php
├── single.php
└── style.css

作成されるテーマファイルはこのような中身になります。


  • カスタム投稿タイプ

カスタム投稿タイプのソースコードを生成できます。

## news というカスタム投稿タイプを標準出力に表示します

wp scaffold post-type news

<?php

function news_init() {
register_post_type( 'news', array(
'labels' => array(
'name' => __( 'News', 'YOUR-TEXTDOMAIN' ),
'singular_name' => __( 'News', 'YOUR-TEXTDOMAIN' ),
'all_items' => __( 'News', 'YOUR-TEXTDOMAIN' ),
'new_item' => __( 'New news', 'YOUR-TEXTDOMAIN' ),
'add_new' => __( 'Add New', 'YOUR-TEXTDOMAIN' ),
'add_new_item' => __( 'Add New news', 'YOUR-TEXTDOMAIN' ),
'edit_item' => __( 'Edit news', 'YOUR-TEXTDOMAIN' ),
'view_item' => __( 'View news', 'YOUR-TEXTDOMAIN' ),
'search_items' => __( 'Search news', 'YOUR-TEXTDOMAIN' ),
'not_found' => __( 'No news found', 'YOUR-TEXTDOMAIN' ),
'not_found_in_trash' => __( 'No news found in trash', 'YOUR-TEXTDOMAIN' ),
'parent_item_colon' => __( 'Parent news', 'YOUR-TEXTDOMAIN' ),
'menu_name' => __( 'News', 'YOUR-TEXTDOMAIN' ),
),
'public' => true,
'hierarchical' => false,
'show_ui' => true,
'show_in_nav_menus' => true,
'supports' => array( 'title', 'editor' ),
'has_archive' => true,
'rewrite' => true,
'query_var' => true,
) );

}
add_action( 'init', 'news_init' );

function news_updated_messages( $messages ) {
global $post;

$permalink = get_permalink( $post );

$messages['news'] = array(
0 => '', // Unused. Messages start at index 1.
1 => sprintf( __('News updated. <a target="_blank" href="%s">View news</a>', 'YOUR-TEXTDOMAIN'), esc_url( $permalink ) ),
2 => __('Custom field updated.', 'YOUR-TEXTDOMAIN'),
3 => __('Custom field deleted.', 'YOUR-TEXTDOMAIN'),
4 => __('News updated.', 'YOUR-TEXTDOMAIN'),
/* translators: %s: date and time of the revision */
5 => isset($_GET['revision']) ? sprintf( __('News restored to revision from %s', 'YOUR-TEXTDOMAIN'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => sprintf( __('News published. <a href="%s">View news</a>', 'YOUR-TEXTDOMAIN'), esc_url( $permalink ) ),
7 => __('News saved.', 'YOUR-TEXTDOMAIN'),
8 => sprintf( __('News submitted. <a target="_blank" href="%s">Preview news</a>', 'YOUR-TEXTDOMAIN'), esc_url( add_query_arg( 'preview', 'true', $permalink ) ) ),
9 => sprintf( __('News scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview news</a>', 'YOUR-TEXTDOMAIN'),
// translators: Publish box date format, see http://php.net/date
date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( $permalink ) ),
10 => sprintf( __('News draft updated. <a target="_blank" href="%s">Preview news</a>', 'YOUR-TEXTDOMAIN'), esc_url( add_query_arg( 'preview', 'true', $permalink ) ) ),
);

return $messages;
}
add_filter( 'post_updated_messages', 'news_updated_messages' );

オプションを付ける事でテーマファイルやプラグインフォルダに保存することも可能です。

wp scaffold pos-type news --theme=originaltheme

デフォルトでは、メッセージも生成されますがオプションでregister_post_type()だけに限定することも可能です。

参考 : WP-CLI wp scaffold post-type

参考 : Codex register_post_type

他にも子テーマや、プラグインのPHPUnitを実行する為に必要なファイルなども作れるそうです。

参考 : WP-CLI wp scaffold

WP-CLIは、まだまだ設定できることがあります。

最近では、wp-cronなどの設定もできるそうです、これからもちょくちょく更新できたらと思います。

他のツールと組み合わせる事でWordPressのセットアップ作業をより簡単に行う事が出来ると思います。皆さんも使われてみてはいかがでしょうか。