東京都府中市、九段下のWEB制作会社Maromaroのブログです

2022.10.31

松橋一誠

WP-CLIでWordPressの定形作業をコード化&自動化!

こんにちは、Maromaroの松橋です。

WordPressでサイトを構築する際に、ユーザーを作成したり、決まったプラグインをインストールしたり、、、など定形作業が沢山あると思います。

サイトを立ち上げる度にGUIでポチポチとクリックするのが時間がかかるな。。作業の簡素化や抜け漏れ防止などでいないかと思案していたところ、WordPressにはWP-CLIというコマンドラインツールがあり、これを利用することで、WordPressの設定をコードとして扱い、繰り返し利用することができる、とのことで便利だなと感じたコマンドをまとめてみよう&試してみました!

WP-CLIのインストール方法

インストール方法は下記ページにて掲載されています。

https://make.wordpress.org/cli/handbook/guides/installing/#recommended-installation

私はWordPressでサイトを構築する時は、Dockerを利用することが多いので、Dockerfileに下記のコマンドを入れてインストールし、コンテナを起動しております。
インストールに成功すると、WP-CLIを利用することができます。


# ----------------省略----------------------




RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x wp-cli.phar \
&& mv wp-cli.phar /usr/local/bin/wp \
&& wp --info


# ----------------省略----------------------

コマンド

WordPressインストール

$ wp core install \
--url='http://localhost:8080' \
--title='TEST SITE' \
--admin_user='test' \
--admin_email='test@exapmle.com' \
--allow-root

オプションでサイトタイトルや管理者ユーザー・メールアドレスなども設定できます。–admin_password オプションで指定したいパスワードを設定できますが、指定しないと、WP-CLI側で設定され、パスワードがCLI上で吐き出されます。

ユーザー作成

$ wp user create customer customer@exapmle.com --role=author --allow-root

WordPressインストール時に管理者ユーザーを作成しますが、その他のユーザーも単独のコマンドでユーザーの作成可能でした。パスワードの設定もWordPressインストール時のコマンドと同様、–user_passオプションで設定できますし、指定がなければ自動で設定されてCLI上で吐き出されます。

デバックモード有効化

$ wp config set WP_DEBUG true --raw --allow-root

デバックモードの有効・無効化も設定可能です。

ローカル開発する時はとても便利ですね〜!

日本語化

$ wp language core install ja --activate --allow-root

管理画面の言語設定を日本語化するコマンドになります。

タイムゾーンと日時表記

$ wp option update timezone_string 'Asia/Tokyo' --allow-root
$ wp option update date_format 'Y-m-d' --allow-root
$ wp option update time_format 'H:i' --allow-root

タイムゾーンと日時表記の設定です。

キャッチフレーズの設定

$ wp option update blogdescription '' --allow-root

キャッチフレーズを空にするコマンドです。
使用するSEOプラグインによってはキャッチフレーズが出たりするので利用しない場合は空にします。

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

$ wp option update show_admin_bar_front false --allow-root

ページ作成時はツールバーを非表示にしたいという時もあると思うので、上記のコマンドで非表示にすることができます。

プラグインの削除

$ wp plugin delete hello.php --allow-root
$ wp plugin delete akismet --allow-root

WordPressにデフォルトでインストールされているプラグインは上記のコマンドで削除が可能です。

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

$ wp plugin install wp-multibyte-patch --activate --allow-root
$ wp plugin install siteguard --activate --allow-root
$ wp plugin install tinymce-advanced --activate --allow-root
$ wp plugin install flamingo --activate --allow-root
$ wp plugin install contact-form-7 --activate --allow-root
$ wp plugin install user-role-editor --activate --allow-root
$ wp plugin install wordpress-seo --activate --allow-root

プラグインをインストールさせることができるコマンドです。

必須で追加しているというプラグインは入れておくと便利ですね。

プラグイン名の部分はzipファイル名でも、プラグインのハンドル名でもOKとのことです。
プラグインのハンドル名は下記で検索した時のディレクトリ名を入れてあげるとインストールできました。

https://ja.wordpress.org/plugins/

WordPress本体アップデート

$ wp core update --allow-root

DockerでWordPressをインストールした時に最新ではないバージョンでインストールされる時があるので、このコマンドで自動アップデートさせることができます。

WordPressプラグインアップデート

$ wp plugin update --all --allow-root

インストールしたプラグインすべてアップデートさせるコマンドもいれておきます。
(※あまり最新ではないプラグインがインストールされたことはありませんが念の為)

WordPress翻訳アップデート

$ wp core language update --allow-root

翻訳のアップデートコマンドです。
アップデートが降りている場合もあるので、最新にしておきます。

自動更新無効化

$ wp config set AUTOMATIC_UPDATER_DISABLED true --raw --allow-root

WordPressは任意のタイミングでアップデートをかけたい。。。という場合もあるかと思いますので、無効化のコマンドも入れます。
ちなみに当社で保守しているWordPressは自動ではなく、手動なので、これも入れておくと抜け漏れ防止に繋がります!

テーマの削除

$ wp theme delete twentytwenty --allow-root
$ wp theme delete twentytwentytwo --allow-root
$ wp theme delete twentytwentyone --allow-root

デフォルトで設置されているテーマも上記のコマンドで削除が可能です。

パーマリンク更新

$ wp option update permalink_structure /%category%/%post_id% --allow-root

パーマリンクも定形のもので利用している場合は、上記のコマンドで設定が可能です。

ページ削除

$ wp post delete 1 --force --allow-root
$ wp post delete 2 --force --allow-root
$ wp post delete 3 --force --allow-root

WordPressインストール時に決まったページが作成されるので、IDを指定することで削除が可能です。

ページ作成

$ wp post create --post_title='会社概要' --post_name=company --post_type=page --post_status=publish --porcelain --allow-root
$ wp post create --post_title='プライバシーポリシー' --post_name=privacy --post_type=page --post_status=publish --porcelain --allow-root

ページ作成もコマンドによって行うことができます。
日本語の部分はシングルクオーテーションを付与しておかないと正しくページ作成されませんでした。

一括でコマンド実行

上記で様々なコマンドをまとめて実行するには、shellファイルにまとめて、書き込み、実行を行うことで一括で設定ができます。

例えば、下記のようにwp-install.shファイルにコマンドをまとめて、/tmp/wp-install.shコマンドで一括で実行ができます。

#!/bin/bash

# WordPressセットアップ admin_user,admin_passwordは管理画面のログインID,PW
wp core install \
--url='http://localhost:8080' \
--title='TEST SITE' \
--admin_user='test' \
--admin_email='test@exapmle.com' \
--allow-root


#WordPressアップデート
wp core update --allow-root
wp plugin update --all --allow-root
wp core language update --allow-root


#お客様ユーザー作成:authorはお客様名に置き換える
wp user create customer customer@exapmle.com --role=author --allow-root



#デバックモード有効化
wp config set WP_DEBUG true --raw --allow-root



# 日本語化
wp language core install ja --activate --allow-root
# タイムゾーンと日時表記
wp option update timezone_string 'Asia/Tokyo' --allow-root
wp option update date_format 'Y-m-d' --allow-root
wp option update time_format 'H:i' --allow-root
# キャッチフレーズの設定 (空にする)
wp option update blogdescription '' --allow-root
#サイトを見るときにツールバーを非表示する
wp option update show_admin_bar_front false --allow-root

# プラグインの削除 (不要な初期プラグインを削除)
wp plugin delete hello.php --allow-root

# プラグインのインストール (必要に応じてコメントアウトを外す)
wp plugin install wp-multibyte-patch --activate --allow-root
wp plugin install siteguard --activate --allow-root
wp plugin install tinymce-advanced --activate --allow-root
# wp plugin delete akismet --allow-root
wp plugin install flamingo --activate --allow-root
wp plugin install contact-form-7 --activate --allow-root
wp plugin install user-role-editor --activate --allow-root
wp plugin install admin-menu-editor --activate --allow-root
wp plugin install wordpress-seo --activate --allow-root



# テーマの削除
wp theme delete twentysixteen --allow-root
wp theme delete twentyseventeen --allow-root
wp theme delete twentynineteen --allow-root
# wp theme delete twentytwenty --allow-root



# パーマリンク更新
wp option update permalink_structure /%category%/%post_id% --allow-root


# ページ削除
wp post delete 1 --force --allow-root
wp post delete 2 --force --allow-root
wp post delete 3 --force --allow-root
wp post delete $(wp post list --post_status=trash --format=ids) --allow-root

# ページ作成
wp post create –-post_title=会社概要 --post_name=company –-post_type=page –-post_status=publish –-porcelain --allow-root

$ /tmp/wp-install.sh

 

まとめ

WordPressには調べると色々な機能があり奥深いですね〜!

以上、Maromaroの松橋でした。