BackWPupがエラーになるから無理やりパッチをあてたゾ

screenshot-1WordPressのバックアップを取るのに便利なツールを探していて、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_HOSTdbhost:port:socket の書式で与えてやれば良さそうだが、これではデータベース接続エラーになってしまい、うまく行かなかった。

WordPressのカテゴリとタグを取り出すゾ

logo-v-rgbWordPressにはカテゴリとタグという概念があり、これを使って投稿を分類分けすることができる。編集画面や一覧画面に行けばこれらを確認したり、変更することができるが、今現在表示されているページのそれを知るのはなかなか難しい。

ということでコマンドラインから覗き見する方法を考えた。

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回使っているのは、タグクラウドが引っかかるのを防止しているためだ。

$ ./gettag http://www.usagi-goten.com/wordpress/blog/2012/04/24/android-tablet%e3%81%a7%e3%82%82%e3%83%8f%e3%83%9e%e3%82%8b/

するとこのように取得できる。

<article id="post-2030" class="post-2030 post type-post status-publish format-standard hentry category-pc tag-android tag-76">

…と思ったら、日本語で作ったタグ(おそらくはカテゴリも)は、tag-76という具合にIDで表示されてしまう。ダメぢゃん。

今のところ必要なのはアルファベットだけのカテゴリおよびタグだから、これでもいいけど。

Facebookにポストできるかのテスト

XB13icRqE48WordPressに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にアクセスし、アクセス許可を行う。

というようなステップで設定ができた。ページを「公開」した後で編集したらどうなるのかな。

テーマを変えてみるテスト

logo-v-rgb今やっているお仕事が、WordPressで作られたサイトを日本語にローカライズするということなので、どこをいじればどうなるのかが分かってきた。ということで、テーマをちょっとだけ変更してみた。

今回は、標準で付いてくるTwentyThirteenというテーマを選んだ。ヘッダのロゴを変えるために、inc/custom-header.phpに以下の変更を施した。

/*
 * Default custom headers packaged with the theme.
 * %s is a placeholder for the theme template directory URI.
 */
register_default_headers( array(
    'circle' => array(
        'url'           => '%s/images/headers/circle.png',
        'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
        'description'   => _x( 'Circle', 'header image description', 'twentythirteen' )
    ),
    '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化することにした。数年前に公開してから、いろいろな人がその場しのぎで改造してきたので、中身がシッチャカメッチャカ(死語)になっているのだ。とはいえいきなり修正もできないものだから、我が家でテストすることにした。調べてみるとWordPress 3.0以降はマルチサイトに対応していることがわかったからだ。

マルチサイト化する作業自体は簡単だった。いろいろなところで解説されている。
http://mage8.com/multiple-blogs-on-wordpress.html
http://lovelog.eternal-tears.com/wordpress/wp-custom/wp-core/wordpress30-multi/
ところがその後が大変だった。トップページは見えても各記事にジャンプしない、少しいじるとpermissionエラーとなる。

  • .htaccess を設定することになっているが、apache2 の設定で AllowOverride が none になっており、読み込んでくれなかった。
  • そもそも mod_rewrite が使われていなかった。
  • そしてきわめつけ、SQL で home が localhost に書き換わっていた。

この最後のものがくせもので、トップページは表示できるがリンクを選択すると http://localhost/…. になってしまうので、アクセスできなくなっていたのだ。
http://ja.forums.wordpress.org/topic/6011

MySQL のデータベースで、

SELECT * FROM wp.wp_options WHERE option_value like ‘%localhost%’ を探すと、option_name = ‘home’ が http://localhost/wordpress になっていたので、これを http://www.usagi-goten.com/wordpress に書き換えたところ、正常にもどった。

どうしてこうなったのかは不明だ。BUG?
Googleったら結構ヒットする。みんな苦労しているんだ。
http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=wordpress+option_name+home