WordPressのバックアップを取るのに便利なツールを探していて、BackWPup というプラグインを見つけた。さっそくインストールしてみたところ、評判通りなかなか良いのだが、肝心要なお仕事用のサーバでエラーが発生し、犬のおまわりさんみたいにわんわんわワンと泣くはめになった。
このサーバは、大阪の某レンタルサーバを使っている。2年ほど前に大チョンボをしてしまったアソコだ。だからよけいにバックアップをとりたい。
さて、調べてみると、
MYSQL_SOCKET = /tmp/mysql.sock となっているのに、
mysql.default_socket = /var/run/mysql/mysql.sock となっていて、これらが一致していないためにデータベースへ通信エラーとなっていることがわかった。
普通ならMySQLの定義ファイル my.cnf か、PHPの定義ファイル php.ini でこれらを一致させれば良いのだが、サーバ屋さんの運営方針でここらをいじらせてくれない。いけず。
## ということでパッチを当てる
BackWPupはソースで提供されているので、中をごそごそと調べてみた。
inc/class-mysqldump.php の85行目付近
このように
ini_get() で
mysql.default_socket の値を取り出し、強制的に
dbsocket にセットしている。これで幸せになれた。
直前の部分を見ると、wp-config.php の
DB_HOST を
dbhost:port:socket の書式で与えてやれば良さそうだが、これではデータベース接続エラーになってしまい、うまく行かなかった。
WordPressにはカテゴリとタグという概念があり、これを使って投稿を分類分けすることができる。編集画面や一覧画面に行けばこれらを確認したり、変更することができるが、今現在表示されているページのそれを知るのはなかなか難しい。
ということでコマンドラインから覗き見する方法を考えた。
curl -s $1 | grep "<article" | grep -e category-[a-z0-9-]* -e tag-[a-z0-9-]* --color
これを例えば gettag という名前で保存し、
chmod +x gettag として実行可能にしておく。その上で、知りたいページのURLを与えてやる。
やってることは単純で、curlコマンドを使って指定されたURLのページ内容をダウンロードし、grepでcategoryとかtagのある行を表示しているだけだ。grepを2回使っているのは、タグクラウドが引っかかるのを防止しているためだ。
するとこのように取得できる。
…と思ったら、日本語で作ったタグ(おそらくはカテゴリも)は、tag-76という具合にIDで表示されてしまう。ダメぢゃん。
今のところ必要なのはアルファベットだけのカテゴリおよびタグだから、これでもいいけど。
WordPressにFacebook Auto Publishプラグインなるものをインストールしてみた。投稿したものがFacebookに自動的にポストされるそうだ。
設定自体は簡単だが、各項目の意味がなかなかわからなかった。うまく設定できているのだろうか。
—-
ああ、できてるできてる。ということで、設定手順のメモ。
1. WordPressのPluginで、Facebook Auto Publishプラグインをインストール
このときphp5-curlパッケージが必要になった
2. WordPressのダッシュボードに「Facebook Auto Publish」のメニューが追加されるので、「Settings」を開く
3. 「Application ID」とか「Application Secret」を要求してくるが、そんなものは持っていないので、Facebookにログインして、デベロッパ登録を行う。携帯電話のメールアドレスでアクティベーションを行うようだ。
4. 「アプリを管理」→「新しいアプリを作成」する。
5. 「アプリ名」「アプリの名前空間」に任意の名称を指定するわけだが、他の人がすでに使っている名前は使えない。ユニークな名前を指定しなければならない。「アプリのカテゴリ」は適当に「ページ用アプリ」を選んだ。WebページのURLはもちろん自分のお家だ。
6. Facebook Auto Publisプラグインに戻り、新規作成したアプリの「App ID」と「App Secret」を入力する。
7. アクティベーションのためにプラグインからFacebookにアクセスし、アクセス許可を行う。
というようなステップで設定ができた。ページを「公開」した後で編集したらどうなるのかな。
今やっているお仕事が、WordPressで作られたサイトを日本語にローカライズするということなので、どこをいじればどうなるのかが分かってきた。ということで、テーマをちょっとだけ変更してみた。
今回は、標準で付いてくるTwentyThirteenというテーマを選んだ。ヘッダのロゴを変えるために、inc/custom-header.phpに以下の変更を施した。
'circle' => array(
'url' => '%s/images/headers/circle.png',
'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
'diamond' => array(
'url' => '%s/images/headers/diamond.png',
'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png',
'description' => _x( 'Diamond', 'header image description', 'twentythirteen' )
'star' => array(
'url' => '%s/images/headers/star.png',
'thumbnail_url' => '%s/images/headers/star-thumbnail.png',
'description' => _x( 'Star', 'header image description', 'twentythirteen' )
'usagi' => array(
'url' => '%s/images/headers/usagi-goten_logo.png',
'thumbnail_url' => '%s/images/headers/usagi-goten_logo-thumbnail.png',
'description' => _x( 'usagi-goten', 'header image description', 'usagi-goten' ),
) );
wordpressの統計情報を作ってくれるサービス、jetpackをインストールしているが、メールで2011年度の年間レポートとやらが届いていた。へぇぇ、こんなことをしてくれるんだ。
オフィスの公式サイトをWordPress化することにした。数年前に公開してから、いろいろな人がその場しのぎで改造してきたので、中身がシッチャカメッチャカ(死語)になっているのだ。とはいえいきなり修正もできないものだから、我が家でテストすることにした。調べてみるとWordPress 3.0以降はマルチサイトに対応していることがわかったからだ。
マルチサイト化する作業自体は簡単だった。いろいろなところで解説されている。
ところがその後が大変だった。トップページは見えても各記事にジャンプしない、少しいじるとpermissionエラーとなる。
- .htaccess を設定することになっているが、apache2 の設定で AllowOverride が none になっており、読み込んでくれなかった。
- そもそも mod_rewrite が使われていなかった。
- そしてきわめつけ、SQL で home が localhost に書き換わっていた。
この最後のものがくせもので、トップページは表示できるがリンクを選択すると  になってしまうので、アクセスできなくなっていたのだ。

MySQL のデータベースで、
SELECT * FROM wp.wp_options WHERE option_value like ‘%localhost%’ を探すと、option_name = ‘home’ が  になっていたので、これを  に書き換えたところ、正常にもどった。
どうしてこうなったのかは不明だ。BUG？
Googleったら結構ヒットする。みんな苦労しているんだ。