カテゴリー別アーカイブ: WordPress

WordPress テーマ F2

Free WordPress Themes directoryで、flexible-width, translation-ready に合致するテーマを検索してみると、たった9つしかありません。 そのうち、シンプルで便利そうなWordPress のテーマ F2 の日本語リソースを作って作者に送ったところ、バージョン 1.0.9 から同梱されるようになりました。

WordPress でping/トラックバックを送信できない

サーバーの移転以来、トラックバックができていないようだと思いながらも、あまり記事を書いていなかったので確信を持てずにいました。思い当たる設定をいくつか直してみたのですが、やはり出ていっていませんでした。

検索してみると実にたくさん引っかかりましたが、どうやら

  1. wp-include/cron.php の wp_remote_post() の設定時間を長くする
  2. Smart Update Pinger プラグインを使う1)
  3. /etc/hosts の 127.0.0.1 にホスト名を加える

の 3 つの解決策に分類されるようです。

まず (1) をやってみましたが、ここでは何も起きず、(2) をやってみると「更新情報サービス」に設定してたところには ping を送信できましたが、トラックバックは別でした。

結局「移転以来」というのが鍵でした。移転というのはいわゆる「自宅サーバー」になった訳ですが、そこに問題がありました。

「自宅サーバー」というのは、つまりルーターの内側にあって、NAT により外側に見えるグローバル IP アドレスと、内側(自分自身を含む)から見えるプライベート IP アドレスが異なっている状態にあるということです。外向きの DNS は立てていたのですが、自分自身 (つまり pasero.net) を 127.0.0.1 や 192.168.x.x と引けなくてもこれまで特に問題はありませんでした (それはそれで驚き)。

「トラックバック」の仕組み上、これではいけないのですね。ひとつの解決策が (3) のように、/etc/hosts で WordPress のあるホスト名を 127.0.0.1 に対応させる方法です。ここでは、VIEWによるスプリットDNSという方法で、内向きの DNS を設定して解決しました。


  1. 後継のUltimate Plugins Smart Update Pinger というものがあるようです。

linkrel-hm プラグイン

たまたまフォーラムのトピックで見かけて、WordPress のバージョン 2.8 よりヘッダにサイトナビゲーションが出力されることを知りました。 出力されるソースを見てみると、記事の single の表示のときはいいのですが、single ではないときには next や prev は付かないようです。 以前、簡単に作ったプラグインがあったので、2.8 本体の出力と重複する部分は出力しないように変更して、使い続けることにしました。

WordPress ja “非公式” IRC チャンネル

今ごろ「WordPress ja “非公式” IRC チャンネル」の記事に気がつきました。この記事は4月2日となっていますから、1ヵ月以上前です。 なんで “非公式”なんでしょう? まあ誰でも勝手にチャンネルは作れるから公式も非公式もないという気もします。 昨日今日とパソコンの前にいる間は入ってみていたのですが、閑散としていました。やはり平日の昼間は誰もいないのかなあ。

移転

このページの設置場所を変更した。 URLは、元はレンタルサーバ会社の所有のドメイン名を使ったものだったので、移転に伴って変更せざるを得ない。そこで現在のURLと相成った。メールアドレスも(ここには書かないが)変更となった。 WordPressの移転は「WordPressサーバ移転まとめ」を参考に。今回はURLが変更になるので、mysqldump した SQL で、ドメイン名の部分を一括変換して新サーバで読み込ませた。 半月記どころか半年記になりつつあるこのページ、存在意義そのものがあやしくなりつつある。この先どうなることやら。

WordPress 2.7beta3-ja

相当長いこと間があいてしまった。 いきなり、出たばかりの(しかもbetaの)WordPress 2.7beta3-jaに入れ替えてみた。今回はまったくお手伝いできなかった。 特に問題はなさそう。しかし管理画面のデザインは以前のバージョンから変わりすぎ。複数の著者で使っている某所をこれに入れ替えたら、ついてこれない人が出そうだ。

WordPress 2.3

WordPress 2.3 が出たので、入れ換え。プラグインの挙動についてはしばらく様子を見たい。このサイトで使っているものはいまのところ特に問題はなさそうだ。

日本語リソース

日本語リソース案内の記述は着々とよくなっている。 ここで私なりの補足。「日本語リソース」とは、WordPress の主要なメッセージの日本語訳をひとつのファイルにまとめたもの。詳しい説明はLocalization Technologyにある。 オリジナル版をダウンロードし、上記の「日本語リソース」を入れれば、主要な部分は日本語になり、これでも使える。 ところが、この方法ではカバーできないメッセージがどうしても残る。そこでそれらのメッセージはプログラム本体の中を直接書き換えなければならない。それは既に「オリジナル版ダウンロード」では得られないので、この書きかえられたものに上記の「日本語リソース」を合わせてパックしたものが「 日本語リソース入り WordPress」となる。この「日本語リソース入り WordPress」パックには、オリジナル版で日本語を扱う際の不都合を補うプラグインも同梱されている。 そこでユーザはどれを選べばいいか、ということになる。
「日本語リソース入りWordPress」
主要なメッセージのほかインストーラやエラー時の表示も日本語化。補助的プラグインも付いてくる。初めて WordPress をインストールするときや、完全日本語版でいう方はこの方法。
オリジナル版に「日本語リソース」のみ
主要なメッセージは日本語化される。インストーラやエラー時の表示は英語のまま。もう WordPress に慣れていて、バージョンアップだからインストーラは不要とか、プラグインは既に入手済または別途入手するから、「日本語リソース入りWordPress」が出るまで待てないという方はこの方法。
オリジナル版のみ
それでも構わない。あちこちのメッセージが英語のままというだけで、日本語を使うこと自体はできる。事情がわかっている方向き。
公開の順番は、オリジナル版のバージョンがまず発表され、それを受けて「日本語リソース」が出され、最後にそれらを受けて「日本語リソース入りWordPress」が発表されることになる。 今回の私の場合は、バージョンアップ、プラグイン導入済、エラーメッセージくらい英語でもかまわない、という状況のため、二番めの「オリジナル版に「日本語リソース」のみ」の方法をとった。

連用日記

紙の日記帳に「10年日記」というものがある。複数年日記のことを連用日記というらしい。Web日記システム tDiary には「長年日記」という機能がある。 WordPress でもこのようなプラグインはないだろうかと探してみた1)。「連用日記」を英語で何と言うのだろうなどと思いつつ、いろいろ探しているうちに onthisday というものを見つけたので、試してみる。

改造のアイデア

自分ではコードを書けないくせに、元ネタがあるともう少し何とかならないものかと思ってしまう。時間が経つと忘れてしまいそうなのでアイデアをここにメモしておく。 まず、そのままでは excerpt (抜粋)の作り方が日本語だとうまくいかないようだ。これは WordPress 本体のどこからかコードをコピーしてくればよさそうだ。 それから、「見ている時点と同じ年の記事は参照しない」というスイッチはあるが、「書かれた時点と同じ年(つまり全く同日)の記事は参照しない」というスイッチもほしい。 もう一つのアイデアはもっと根本的なこと。この onthisday を見つける前から思っていたことだ。例に挙げた tDiary の「長年日記」や紙の連用日記でも過去の年の「同一月日」を参照する。しかし実生活は「曜日」を基準に動いていることが多いのではなかろうか。たとえば今年は月曜日とすると去年の同じ日は日曜日で、普通の勤め人や学生のような生活なら、その日どうしを並べるより同じ月曜日を参照するほうが意味が多いように思える。 しばらく前に「第何何曜日」について考えたので、それを使って、同月同曜日を指すようにできるのではないか。 欠点と言えば、だいたいの場合は1年で1日違い(うるう年なら2日違い)なのだがたまに1週間ほど日付がずれてしまうところがあることだろう。これはそもそも今の暦システムの欠点2)なのだが。 そのうち暇をみて、改造できるものかどうかやってみたい。もし何かの拍子にこれをご覧になって(あるいは見るより前に)さっさと実装された方があったら教えてください。
  1. このサイトのようにポツポツとしか書いていないと何の面白味もないが。
  2. 1年365日を1週7日で割りきれないこと。しかも月ごとに日数が変わるなど、不規則だらけでまったく変なシステムである。

WordPress 2.2.2

WordPress 2.2.2 が出たので入れ換え。マイナーな変更のようだし、もはやあまり話題にはなっていないようだ。 本家からダウンロードし日本語リソース案内所から ja.mo をもらってきて置くだけで完了。特に問題はなさそうだ。

wp_list_authors()

さてここを含め複数の管理している(請け負っている) WordPress サイトをアップグレードしたのだが、そのひとつは久しぶりだった (2.1.3 –> 2.2.2)。そこで挙動が変わった点を見つけた。 そこは複数のユーザが執筆しており、通常の記事のほかにも(静的)ページもたくさんあるという構成になっている。たいていの場合サイドバーに「カテゴリー」「アーカイブ」のリストが設置されているように、それらに加えて「執筆者」のリストも表示するるようにしていた。これは wp_list_authors() という用意されている関数を用いている。この引数に optioncount=1 を与えると、執筆者名の横にその人の書いた記事数が表示される。これまでその数は記事のみの数だったのだが、今回のアップグレードで(静的)ページの数も含んだ数が表示されるようになってしまった。 どちらが便利かはサイトによるだろうから、一概にバグとは言えないとは思う1)。仕様を変更してしまうより、どちらか選択できるようにスイッチを増やしてもらったほうがありがたかった。
  1. 複数ユーザで静的ページも多くあるサイトを運営していているところは割合としてはとても小さいだろうだろうから、情報は極めて少ないだろう。検索してみても日本語でこれに触れているものは見つからなかった。英語でまで調べてみようとはいまは思っていない。

iG:Syntax Hiliter プラグインと Footnotes プラグイン

WP-Dokuwiki をやめてしばらく WP 標準で書いてみようと思っている。WP-Dokuwiki で便利に思っていたのはソースコードのハイライトと脚注。これに代わるプラグインを探す。それぞれ数種類づつ見つかったが、ちょっとづつ試してみて iG:Syntax Hiliter プラグインと Footnotes プラグインを使うことにした。

iG:Syntax Hiliter プラグイン

現在のバージョン v3.5 は、添付のマニュアルを見ると 19 ほどの言語に対応しているとある。が、ふとサブディレクトリの GeSHi を最新版に入れ替えてみたらどうだろうと思い、やってみると特に問題はなさそうだ1)。これで 80 ほどの言語に対応する(ほとんどは一度も使わないだろう)。Bash や diff, LaTeX もいけそうだ。 いろいろ探しているうちに “iG:Syntax Hiliterの不具合(?)を直す” という記事を発見。ここでも何かの拍子に設定がリセットされてしまったことがあったので、これかと思い対策した。

Footnotes プラグイン

使い方は WP-Dokuwiki の脚注とほぼ同じで、簡単。ただ出力は、本文の最後に <br /> をつけてそのあとに番号付きリストを生成するようになっているらしい。するとなぜか自動で挿入される </p> がおかしくなり、HTML 的に間違ったことになる。それで
DIFF:
  1. --- footnotes.php.orig
  2. +++ footnotes.php
  3. @@ -98,14 +98,14 @@
  4.  
  5.         if ($footnotes){
  6.                 $counter = $start_number;
  7. -               if ($start_number != 0) $data = $data.'<br /><ol start="'. ($start_number + 1) .'" class="footnotes">';
  8. -               else $data = $data.'<br /><ol class="footnotes">';
  9. +               if ($start_number != 0) $data = $data.'<div><ol start="'. ($start_number + 1) .'" class="footnotes">';
  10. +               else $data = $data.'<div><ol class="footnotes">';
  11.  
  12.                 foreach($footnotes as $footnote){
  13.                         $counter++;
  14.                         $data = $data.'<li id="footnote-'.$counter.'-'.$post->ID.'">'.$footnote.'  '.$current_settings['pre_backlink'].'<a href="#footnote-link-'.$counter.'-'.$post->ID.'">'.$current_settings['backlink'].'</a>'.$current_settings['post_backlink'].'</li>';
  15.                 }
  16. -               $data = $data.'</ol>';
  17. +               $data = $data.'</ol></div>';
  18.         }
  19.      return $data;
  20.  }

と、<div> に入れることにした。 見栄えはスタイルシートで設定する。
  1. iG:Syntax Hiliter プラグインの syntax_hilite.phpswitch 文にいくつか case を書き足す必要があるかも。