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-config.phpのセットアップ
wp core config --dbname=wordpress --dbuser=wordpress --dbpass=pass --dbhost=localhost --dbprefix=wordpress_
localhostやprefix値はデフォルトの値が設定されています。
ほかにもデバッグモードの有効方法が公式にあります。
- 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と組み合わせているので下記のように使っています。
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%/
などなど、
テーブルの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のセットアップ作業をより簡単に行う事が出来ると思います。皆さんも使われてみてはいかがでしょうか。