mixhostでWP-CLIを用いたWordPressのローカライズ版(日本語版)の自動更新

2018年1月10日

WordPressを使っていて、1つ困ることがあります。

「日本語版への自動更新をしてくれないので、バージョンアップを2回行わなければならない」という問題です。

この画像をご覧ください。

既にWordPress4.9.2になっているのに、「WordPress 4.9.2 が利用可能です !」と言われるのは、気持ちのいいものではありません。

その意味としては、「日本語版へバージョンアップしてね」ということです。

WordPressはまず英語版ができたあと、有志の方々がローカライズ版である日本語版を翻訳するので、日本語版のリリースが少し遅れます。また、なぜかWordPressの自動更新機能ではこの「日本語版へのバージョンアップ」を自動で行ってくれないのです。悲しい。

ちゃんと日本語版へも自動でアップデートしてほしい!

解決策

いろいろ調べたのですが、最も簡単そうな解決策が「WP-CLIをcronで実行して自動更新をかける」という方法でした。とはいえ少々面倒ですが、やってみることにします。

ちなみに「WP-CLI」とは、サーバーにインストールして利用する、WordPress をコマンドライン操作できるツールです。

そしてcronとはサーバーでコマンドを定期的に自動実行する機能です。こいつを利用します。

私はサーバーにmixhostを利用していますので、mixhostの例を紹介します。また、OSはmacです。

mixhostにSSH接続

まずはサーバーにSSH接続します。mixhostでのSSH接続には公開鍵認証を使うので、少し複雑です。

SSHとは?

SSH(Secure Shell)とは、通信を暗号化してサーバーにログインし、コマンドを実行したりファイルの転送などを行う方法です。

SSH接続手順

まず、mixhostの管理画面「cPanel」で「SSHアクセス」を選択します。

アクセスキーの設定

「SSHキーの管理」を選択し、

「新しいキーの生成」をクリック。

この画面でキーを生成します。パスワードを入力して「キーの生成」をクリックすればOKです。強靭なパスワードをつくるために、「パスワード生成ツール」を使うのが良いでしょう。

キーの生成が完了したら、認証ステータスが「not authorized」なことを確認して、「管理」をクリック。

次の画面で「authorize」します。

秘密キーの設定

認証ステータスが「authorized」なことを確認したら、秘密鍵をダウンロードします。

「id_rsa」というファイルをダウンロードしたら、次はターミナルからの操作です。ターミナルにて次のように操作します。

ホームディレクトリに「.ssh」というディレクトリを作成

$ mkdir ~/.ssh

作成した「.ssh」内に「id_rsa」ファイルを移動させます。(こちらは一例)

$ mv id_rsa ~/.ssh/id_rsa

「.ssh」ディレクトリのパーミッションを700に、「id_rsa」ファイルのパーミッション(権限)を600に設定します。

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_rsa

これで、macには秘密鍵、サーバーには公開鍵が設置された状態になりました。

SSHログイン

準備ができたので、SSHでログインします。

mixhostを契約した時の「【mixhost】 サーバーアカウント設定完了のお知らせ」というメール内に、このような記載があります。

FTP接続情報

FTPホスト名: abcde.mixh.jp
FTPSホスト名: jp8.mixhost.jp
ユーザー名: qjkxbmwvz
パスワード: pyfgcrl
Webサイトフォルダ: /public_html

ターミナルでこのように入力します。

$ ssh [ユーザー名]@[FTPSホスト名] 

初回の接続ではこのように表示されるので、yesと入力します。

The authenticity of host 'abcde.mixhost.jp (123.123.123.123)' can't be established.
ECDSA key fingerprint is SHA256:mv6A.
Are you sure you want to continue connecting (yes/no)?

続いてパスワードを求められるので、そちらも入力。画面がこのようになったら成功です。

[qjkxbmwvz@jp8 ~]$

WP-CLIの設定

さて、いよいよWP-CLIの設定です。まずはbinフォルダに移動します。

[qjkxbmwvz@jp8 ~]$ cd bin

binディレクトリが存在しなかったら、"$ mkdir bin"しましょう。
続いてWP-CLIをダウンロードします。

[qjkxbmwvz@jp8 ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

パーミッション(権限)を変更します。

[qjkxbmwvz@jp8 ~]$ chmod +x wp-cli.phar

続いてコマンドを実行し、無事に動作するか確認してみます。

[qjkxbmwvz@jp8 ~]$ php wp-cli.phar --info
PHP binary:	/opt/cpanel/ea-php56/root/usr/bin/php
PHP version:	5.6.32
php.ini used:	/opt/cpanel/ea-php56/root/etc/php.ini
WP-CLI root dir:	phar://wp-cli.phar
WP-CLI vendor dir:	phar://wp-cli.phar/vendor
WP_CLI phar path:	/home2/qjkxbmwvz
WP-CLI packages dir:	
WP-CLI global config:	
WP-CLI project config:	
WP-CLI version:	1.4.1

エイリアスの設定

無事に動作したら、エイリアスを設定します。これでWP-CLIが「wp」と打つだけで実行できるようになります。

ホームディレクトリに移動した後、viエディタで.bashrcを編集します。

[qjkxbmwvz@jp8 ~]$ cd ~
[qjkxbmwvz@jp8 ~]$ vi .bashrc 

キーボードの「i」を押して挿入モードに切り替え、最後の行に以下を追記します。

alias wp='~/bin/wp-cli.phar'

※余談
WP-CLIを実行する時に最大メモリ使用量に関するエラーが出る時には、ここで、

alies wp='php -d memory_limit=-1 ~/bin/wp-cli.phar'

のように「-d memory_limit=-1」を追加するとエラーの回避ができることがあります。

追記が終わったらEscキーを押したのち、「:wq」と入力してEnterキーでファイルを保存し、エディタを終了します。
そして変更が反映されるよう、「~/.bashrc」 の再読込を行います。

[qjkxbmwvz@jp8 ~]$. ~/.bashrc

うまくwpコマンドが動くか試してみましょう。WP-CLIのバージョンを確認してみます。

[qjkxbmwvz@jp8 ~]$ wp cli version
WP-CLI 1.4.1

アップデートを行ってみる

続いてアップデートを行ってみましょう。ここまでくればあとは簡単、WordPressのあるディレクトリに移動して、コマンドを実行するだけです。

通常、アップデートのコマンドは「wp core update」ですが、日本語版をインストールするために「–force –locale=ja」を追加します。

[qjkxbmwvz@jp8 ~]$ cd ~/public_html/wordpress
[qjkxbmwvz@jp8 wordpress]$ wp core update --force --locale=ja
Updating to version 4.9.2 (ja)...
https://downloads.wordpress.org/release/ja/wordpress-4.9.2.zip から更新をダウンロード中...
更新を展開しています…
Success: WordPress updated successfully.

このように、日本語版を指定してwordPressのバージョンアップが可能です。

cronに追加

ここまでのアップデート作業をcronに追加してみます。

今回、私はこのようなシェルスクリプトを作成して「~/public_html/wp-cli-cron.sh」として保存しました。

#!/bin/sh
export LANG=ja_JP.UTF-8
alias php='/opt/cpanel/ea-php71/root/usr/bin/php'
php /home/qjkxbmwvz/bin/wp cli update --yes
cd /home/qjkxbmwvz/public_html/wordpress
php /home/qjkxbmwvz/bin/wp core update --force --locale=ja
exit

ポイントは4つです。

文字コードの設定

export LANG=ja_JP.UTF-8

というのは、cronの実行結果をメール送信する人は追加しておきましょう。

実行権限の不可

シェルスクリプトには、実行権限の不可も忘れずに。

[qjkxbmwvz@jp8 ~]$ chmod +x ~/public_html/wp-cli-cron.sh

PHPのエイリアスを設定

何故かmixhostでは、cronを経由してWP-CLIを実行させると上手く動作しません。いろいろ調べたところ、mixhostではcronを経由して実行するPHPが「GUI版PHP」になっていることが原因のようでした。

そのため、ここでこのようにコマンドライン版PHPを明示的に指定しています。

alias php='/opt/cpanel/ea-php71/root/usr/bin/php'

wp cli update –yes

自動でWP-CLIをアップデートさせるために、–yesオプションを追加しています。

cronの設定

ここまでできたら、cronに追加します。cPanelからcronを選択します。

そして以下のようにcronジョブを追加します。ここでは1日1回に設定しています。

設定したコマンドはこちらです。

/home/qjkxbmwvz/public_html/wp-cli-cron.sh

※アップデート結果のメール送信が不要な場合はこちら

/home/qjkxbmwvz/public_html/wp-cli-cron.sh  >/dev/null 2>&1

これで設定は完了です。2回のアップデートの煩わしさから解放されました(^^)

ブログ運営

Posted by auto-ts.net