前回は、mixhostからエックスサーバーにWordPressサイトを移転した後の微調整を紹介しました。
今回はWordPressをコマンドラインから管理するための「WP-CLI」というツールをエックスサーバーで利用したいと思います。
WP-CLIとは
WP-CLIとはWordPressをコマンドラインから管理するためのコマンドです。公式サイトは下記になります。うれしいことに公式サイトは日本語に対応していていました。
WP-CLIを使ってできることは多岐にわたります。WP-CLIのコマンドについては下記にまとまっています。
私がWP-CLIを使って便利だと思ったのが、コマンドラインを使って記事をポストできると言うことです。
シェルスクリプトと組み合わせたりすれば、自動的に記事を更新することもできたりします。
実は、mixhostでWordPressを運用している頃はWP-CLIを使って記事の更新をしていました。
そのためmixhostからエックスサーバー引っ越した後でもWP-CLIを使いたいところです。
WP-CLIを使う前の準備
WP-CLIはコマンドラインのツールなので、エックスサーバーのレンタルサーバーにSSH接続して作業する必要があります。
SSHでの接続方法については公式サイトで案内があるので参照してみてください。
エックスサーバの状況
以降の操作はSSHで接続して行います
エックスサーバーではWP-CLIはwpという名前で導入済だったりします。
$ which wp
/usr/bin/wp
$ wp --version
WP-CLI 2.4.0
ちょっとバージョンが古いですが、すぐに使えるのはありがたい限りです。
この記事作成時点ではWP-CLIは2.7.1が最新になっています。
このバージョンを使いたい場合は自分でインストールする必要があります。
$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ mkdir -p bin
$ chmod +x wp-cli.phar
$ mv wp-cli.phar bin/wp
今回の記事は最新版のWP-CLIは導入せずに、エックスサーバーに最初から入っていたWP-CLI 2.4.0を利用します。
WP-CLIを使うための設定
まずWP-CLI自身の情報を表示してみましょう。
$ wp --info
OS: Linux sv14573.xserver.jp 5.4.0-147-generic #164~18.04.1-Ubuntu SMP Tue Apr 4 00:20:20 UTC 2023 x86_64
Shell: /bin/bash
PHP binary: /usr/bin/php
PHP version: 5.4.16
php.ini used: /etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/ユーザ名
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0
ここで注意したいのは「PHP version」の部分です。この結果を見るとWP-CLIは「PHP 5.4.16」を使って動作しています。
一方、WordPressの「WP-ServerInfoプラグイン」で確認すると、WordPressは「PHP 7.4.33」で動作しています。
WP-CLIで使うPHPのバージョンと、WordPressで使っているPHPのバージョンは一致させておいた方が無難です。
WP-CLIを特定のPHP上で動作させたい場合は、PHPコマンドの引数としてWP-CLIを実行すればOKです。
まずPHPのコマンドを「–verion」オプションを使って特定しましょう。
$ php7.4 --version
PHP 7.4.33 (cli) (built: Nov 1 2022 16:31:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
「php7.4」というコマンドが「PHP 7.4.33」に対応していることが確認できました。
基本的にPHP x.y.zは、「phpx.y」というコマンドに対応しているようです。
あとはこのphp7.4の引数としてWP-CLIを実行してみましょう。
$ php7.4 /usr/bin/wp --info
OS: Linux 5.4.0-147-generic #164~18.04.1-Ubuntu SMP Tue Apr 4 00:20:20 UTC 2023 x86_64
Shell: /bin/bash
PHP binary: /opt/php-7.4.33/bin/php
PHP version: 7.4.33
php.ini used: /opt/php-7.4.33/etc/php.ini
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /home/ホームディレクトリ
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.4.0
ちゃんと「PHP version」が「7.4.33」になっていることがわかると思います。
毎回、phpのコマンドを指定するのが面倒なので、「wp」で「php7.4 /usr/bin/wp」が実行されるようにエイリアスの設定をしておきましょう。
$ echo -e "\nalias wp='php7.4 /usr/bin/wp'" >> .bash_profile
$ source .bash_profile
ついでに補完をするための設定をしておきましょう。後はWP-CLIでタブ補完をできるように設定ファイルを取得します。
$ curl -O https://raw.githubusercontent.com/wp-cli/wp-cli/v2.4.0/utils/wp-completion.bash
$ mkdir -p etc
$ mv wp-completion.bash etc
そして「.bash_profile」の末尾でこのファイルを読み込むようにします。
$ echo -e "\nsource ~/etc/wp-completion.bash" >> .bash_profile
あとは.bash_profileを再読込してこの設定を有効にします。
$ source .bash_profile
この設定が有効になれば「wp 」と入力してからTABキーを押すと利用可能なコマンドが表示(補完)されます。
$ wp <タブキー>
cache db import package search-replace term
cap embed language plugin server theme
cli eval maintenance-mode post shell transient
comment eval-file media post-type sidebar user
config export menu rewrite site widget
core help network role super-admin
cron i18n option scaffold taxonomy
WP-CLIを使って見る
エックスサーバーの「WordPress簡単インストール」でWordPressをセットアップすると、ホームディレクトリにあるドメイン名(ホスト名)のディレクトリ内のpublic_htmlディレクトリにWordPressがインストールされています。
インストールされているWordPressには「Hello world」というタイトルの記事があるはずです。
テーマにはCocoonを使っています。
この記事の内容をWP-CLIを使って確認してみましょう。この記事はID=1なので、ID=1の内容をwp postコマンドでチェックしてみます。
$ wp post get --path=$HOME/ドメイン名/public_html 1
+-----------------------+------------------------------------------------------+
| Field | Value |
+-----------------------+------------------------------------------------------+
| ID | 1 |
| post_author | 1 |
| post_date | 2023-05-23 23:19:59 |
| post_date_gmt | 2023-05-23 23:19:59 |
| post_content | <!-- wp:paragraph --> <p>WordPress へようこそ。こち |
| | らは最初の投稿です。編集または削除し、コンテンツ作成 |
| | を始めてください。</p> <!-- /wp:paragraph --> |
| post_title | Hello world! |
| post_excerpt | |
| post_status | publish |
| comment_status | open |
| ping_status | open |
| post_password | |
| post_name | hello-world |
| to_ping | |
| pinged | |
| post_modified | 2023-05-23 23:19:59 |
| post_modified_gmt | 2023-05-23 23:19:59 |
| post_content_filtered | |
| post_parent | 0 |
| guid | http://ドメイン名/ |
| menu_order | 0 |
| post_type | post |
| post_mime_type | |
| comment_count | 1 |
+-----------------------+------------------------------------------------------+
さらに「–field」というオプションを使うと特定のフィールドだけ取り出すことができます。この記事のタイトルを取り出す場合は次のようになります。
$ wp post get --path=$HOME/ドメイン名/public_html 1 --field=post_title
Hello world!
次に新しい記事を投稿してみましょう。
$ wp post create --path=$HOME/ドメイン名/public_html --post_title='Hello WP-CLI!' --post_content='<p>WP-CLIを使った記事の投稿のテストです。</p>' --post_status=publish
Success: Created post 4.
その後、ブラウザで見てみると新しい記事が追加されていることがわかると思います。
まとめ
今回はエックスサーバーのレンタルサーバーでWP-CLIというツールを利用してみました。
エックスサーバーはデフォルトでWP-CLIがインストールされており、すぐに使うことができますが、WordPressで利用しているPHPのバージョンに合わせるのがオススメです。このWP-CLIを使うとコマンドラインでWordPressのコンテンツなどを変更できるので、自動制御などを考えている方には便利なツールと思います。
次回はエックサーバーにPerlモジュールを追加してみます。
コメント