WordPress プラグインを GlotPress で国際化する必要最低限の手順

英語で作成した WordPress プラグインを国際化したので、その手順を書き残します。
この手順は、GlotPress を使った翻訳のみ想定しています。
また、あらかじめ公式ディレクトリにプラグインを掲載している前提です。

プラグインのスラッグを調べる

まずはプラグインの URL からスラッグを調べます。
URL が https://wordpress.org/plugins/analytics-tracking の場合、スラッグは analytics-tracking となります。
プラグインのスラッグは、テキストドメインとして使用します。
テキストドメインとは、WordPress が読み込む翻訳を区別できるようにするための一意識別子です。
GlotPress での翻訳を反映するには、プラグインのスラッグとテキストドメインを一致させる必要があります。

プラグインヘッダにテキストドメインを追加する

プラグインヘッダにテキストドメインを追加すると、管理画面でプラグインを表示するときに WordPress がプラグインメタデータを国際化します。

プラグインヘッダ

/*
 Plugin Name: Analytics Tracking
 Plugin URI: https://github.com/hirofumi2012/analyticstracking
 Description: Add the tracking code snippet to each web page.
 Version: 2.6
 Author: hirofumi2012
 Author URI: https://four-dimensional-friend.appspot.com/
 License: GPLv2 or later
 Text Domain: analytics-tracking
 */

管理画面

load_plugin_textdomainの追加

プラグインに翻訳ファイルを読み込む処理を追加します。

function myplugin_load_textdomain() {
 load_plugin_textdomain( 'analytics-tracking' );
 }
 add_action( 'plugins_loaded', 'myplugin_load_textdomain' );

なお、プラグインに言語ファイルを同梱しない場合load_plugin_textdomain の第二引数以降は全て省略可能です。

引用元

Late 2015 版、WordPress プラグインの翻訳の仕方

翻訳する文字列のマーク

プラグインで翻訳する文字列とテキストドメインを __() 関数でくくります。

$hello = __('Hello', 'analytics-tracking');

文字列を echo で出力する場合は、_e() 関数を使います。

_e('Hello', 'analytics-tracking');

参考ドキュメント

I18n for WordPress Developers – WordPress Codex 日本語版

まとめ

以上の手順で、プラグインを GlotPress で翻訳できるようになりました。
GlotPress で翻訳を登録して承認されると、プラグインに反映されます。

参考ドキュメント

はじめの一歩 – 翻訳の始め方

Google Cloud Platform (GCP) で WordPress を運用する様々な方法

2017/11/23パート2投稿しました。

最近、Google Cloud Platform (GCP) のドキュメントを調べていて、WordPress の運用方法についていくつか気が付いたことがあるので、まとめて紹介します。

Google Cloud Platform (GCP) とは

Google が提供している様々なクラウドサービスをまとめて、Google Cloud Platform (GCP) といいます。
アプリケーションの実行環境を提供する Google App Engine (GAE) や、スケーラブルな仮想マシンを提供するGoogle Compute Engine (GCE) は、それらのサービスの一部です。

GAE スタンダード環境で運用する方法

このサイトで実践している運用方法です。
英語ですが、Google公式のスターターキットにインストール手順が記載されています。
GAE は、あくまで PHP 等のプログラムで作成されたアプリケーションを実行するだけのPaaS です。WordPress を利用するには、メディア等ファイルをアップロードするための Google Cloud Storage (GCS) や、MySQL を使用するための Cloud SQL、といった他のGCP サービスも連携して利用する必要があります。
アプリケーションはトラフィックに応じて自動でスケールアップまたはスケールダウンするように設定でき、使用したリソースの分だけ課金される料金体系になっています。
GAE スタンダード環境には、1日毎に無料利用枠が用意されていて、小規模なWebサイトなら無料の範囲内で利用することもできます。
ただし、Cloud SQL には無料利用枠がないため、最低でも Cloud SQL で $8.46~/月 の費用がかかります。
また、セキュリティ上の制限が厳しく、WordPress本体やプラグイン等のインストール/アップグレードは手動で実施する手間があります。

GAE フレキシブル環境で運用する方法

最近になって気が付いたのですが、GCP のドキュメントにApp Engine フレキシブル環境での WordPress のホスティングというチュートリアルが載っていました。
日本語になっていて、インストール手順も簡略化されているので、とても親切です。
WP-CLIを使ってプラグイン等を更新する手順も載っています。
(実際に試したわけではありませんが、GAE フレキシブル環境でも、管理画面からの自動更新はできないはずです。)
ただ、GAE フレキシブル環境には無料利用枠がないので、どれくらいの費用が掛かるのか気になります。

GCE で運用する方法

GCE は IaaS なので、仮想マシンに Web サーバ(Apache)と PHP と MySQL をインストールした上で、WordPress をデプロイする必要があります。
WordPressのランチャーを使用すると、動作環境の構築も含めて一括でインストールすることができます。
GAE のような制限もないため、WordPress の自動更新も使えます。
推定費用は、以前確認した時は$24.67/月だったはずですが、2017/08/28 現在は$49.35/月になっています。また、同じようなランチャーではなんと10分の1の$4.28/月になっています。
これは、使用するマシンタイプによって推定費用が変わっているようです。
自動スケーリングの設定はできないため、要件に合ったマシンタイプを見極めることが肝心です。

まとめ

以上、3通りの運用方法を紹介しました。
それぞれの特徴を表にまとめてみます。

GAE スタンダード環境 GAE フレキシブル環境 GCE
インストール手順 長い 普通 短い
スケーリング 自動 自動 手動
運用費用 $8.46~/月 不明 $4.28~/月
アップグレード 手動 WP-CLI 自動

いかがでしょうか。
実際にやってみると、意外と日本語化が面倒だったりするかもしれませんが、是非プロジェクトに合った運用方法で挑戦してみてください。

WordCamp Kyoto 2017 に当日スタッフとして参加してきました

6月24日と25日に京都大学で開催された、WordCamp Kyoto 2017 に参加してきました。
WordCamp に参加するのは初めてでしたが、折角の機会だと考え、当日スタッフに申し込みました。
僕はセッションの撮影とタイムキーパーの係でした。
撮影係は立ちっぱなしが辛くて、背骨が折れるんじゃないかと思いましたが、やりながらでもセッションは聞けたのでラッキーでした。


あとから動画を見返して気がついたんですが、明るいスライドだと文字が白飛びしてしまって読めませんね…
明るさの調整をするところまで頭が回りませんでした。すみませんm(__)m

ところで、このセッションの10分以降を見てください。
tab index はなくした方が良いと言われているそうですが、これはなぜでしょうか。
ネットで検索しても古い情報ばかり出てくるし、WCAG 2.0 からも見つけられませんでした…
そもそも、本人に聞くチャンスがあったのに、怖じ気付いてしまって聞けませんでした(^^;

こういうところがなんとも不甲斐ないですね。

それでも、このイベントに参加したおかげでいろんな方と接することができました。
今思えばすごい人ばかりで、大変貴重な経験でした。
この経験を今後に活かせるか否かが僕の運命を大きく左右することでしょう。

親切に接してくださった皆さん、本当にありがとうございました。

プラグイン作りました

さくっと、WordPressのプラグインを作ってみました。

Google Analytics のトラッキングコードを各ページに挿入するだけのプラグインです。

そんなの、もっと高機能なプラグインがいくらでもあるんですけど、作ってみたかったんです。

https://github.com/hirofumi2012/analyticstracking

最初は、トラッキングIDもろともphpファイルに書いてたんですけど、Settings API を使って、管理画面の 設定 > 一般 から入力できるようになりました。

ちょっと設定項目を追加するくらいなら、管理メニューまで作成しなくてもいいんですね。

  1. register_setting() と add_settings_field() を使用して、新たな設定フィールドを作成する。
  2. フィールドをまとめる場合は、add_settings_section() を使用して独自のセクションを作成する。
  3. セクションをまとめる場合は、管理メニューを追加する。

こんな感じの優先順位で設計すればいいと思いました。

もし、実装に不具合や改善点等あれば、マサカリを投げてください。
さくっと、顔面で受け止める覚悟です。

WordPress を Google App Engine (GAE) 東京リージョンで運用した場合のレスポンス

このサイトは、WordPress を Google App Engine (GAE) にインストールして運用しています。
それが分かるように、あえて独自ドメインは取得せず、 appspot.com サブドメインのままにしてあります(笑)
ちなみに、WordBench Nagano Vol.8 でも紹介させていただきましたが、インストールする方法はGoogle公式のスターターキットに載っています。

※注意点はスライドにまとめてあります↓

そして、今度は東京リージョンで運用してます!
単純に比較して良いのかわかりませんが、wp-cron.php のレイテンシを見ると、アメリカリージョンで運用しているサイトでは、1,500 ~ 2,000 ms くらいかかっているのに対して、東京リージョンの方では、300 msくらいになっています。

これって、一般的なレンタルサーバ等と比べてどうなんでしょうか。