更新履歴カテゴリーの投稿

ネットワークから切れていました
2月15日(月)〜17日(水)21時ごろまで、サーバーがネットワークから遮断された状態となっていました。このため、当サイトが見られない状態でした。ご迷惑をおかけいたしました。

英語ウェブログ開始
突然ですが、英語ウェブログを始めることにしました。URL は http://en.yuriko.net/ となります。これは、Ktai Style の世界進出を行う戦略の一歩です。
現在、少しずつ自作の小物プラグインを WordPress Plugins/JSeries から WordPress 公式プラグインディレクトリーに移設しています。これにより、全世界の WordPress 利用者がわたしのプラグインを見てくれるようになります。そうなると、「どういう人が作っているのか」ということが分かるようにしておいた方がよいでしょう。そのためには英語サイトが必要だと考えたのです。そんなに英語は堪能ではないですが、技術的な内容であれば難しい文法を使う必要はないですから、なんとか書けるでしょう。
Yuriko.Net (当サイト) 同様、WordPress を別途インストールすることも検討しましたが、閲覧者が多くなって輻輳したら困ること、WordPress.com サービスを試してみたかったことから、WordPress.com で開設しました。そして年10ドルの独自ドメイン割り当てサービスを使って “en.yuriko.net” のドメインを設定しました。これにより、WordPress.com サービスが潰れても安心です;-)
とりあえずは、プラグインのリリース案内 (これは README.txt に書いたものを流用) を行う場として使います。あとは、旅行ブログのサマリーを英語にして写真とともに紹介することを考えています。

2010年あけました
2010年あけましておめでとうございます。今年の年明けは久し振りに USJ カウントダウンイベントを鑑賞し、寒空の中で大観衆と共に年明けを迎えました。強風のため大幅に打ち上げ花火がカットされてしまい、少し残念なカウントダウンとなってしまいました。
その後は終夜運転を実施する JR西日本と近鉄で実家に戻り、仮眠のあと雑煮を頂きました。大阪風で、白味噌ベースに結び昆布、くわい(芽の出た小芋)、大根、金時人参、焼かない丸餅が入っています。これは元日のみで、2日目はすまし汁ベースで水菜と焼いた丸餅を入れます。他の地域の雑煮は、おでさんの「みんなの家の雑煮を見せてください」を見てみましょう。
去年はオープンソース活動の方は非常にアクティブに行いましたが、J2 ジンギスカンの方は「20周年イヤー」のイベントをあまり盛り上げることができず、少し心残りになりました。プライベートの方は、いろいろ計画していたことがほとんど進まず、残念な結果となりました。特に、twitter を始めてしまって旅行ウェブログの力を抜いてしまったのはダメすぎます。
今年は (公開できるものとしては) 以下のプランを立てました。少なくとも75%は達成したいものです。
- ケータイ大喜利で3本は採用され、メジャー5段には昇格する。
- 誕生月 (9月) に四国一周旅行を再び行う。
- WordPress Plugins/JSeries のリニューアル
- 自作プラグインの WordPress 公式ディレクトリーでの公開 (==世界進出)
- WordPress プラグインコンペティションでの入賞
- Ktai Style のバージョン 2.0 公開
- WordBench オリジナルグッズの作成
- J2 関東オリジナルグッズの作成
わたしの人生における目標として「常に自分自身を磨き、自身の知識やノウハウを広く公開する。それによって、多くの人が自己研鑽できる環境を構築し、みんなでスキルアップを図る」というのがあります。WordBench 勉強会はまさにその1つです。今年も、いろいろと新しいことにチャレンジし、また今まで行なってきたことをさらにレベルアップさせようと思います。

Yuriko.Net ドメイン10周年およびプレゼント企画
本日11月26日は、Yuriko.Net ドメインを取得して10周年の日となる日です。ウェブサイトそのものはもっと前から公開していましたが、設置場所やドメイン名を転々としたあげく、ふと思いついて独自ドメインを取ったのが10年前でした。結果として「サイト URL を永続的なものとする」ことができました。
で、10周年を記念いたしまして、ウチの家に転がるオールドガジェット (つまり、ガラクタ) を大放出いたします。ラインナップおよび応募要項は次の通りです。

2010年の祝日を投入
11月はじめの恒例イベントとなった祝日設定を行いました。当サイトのカレンダーは日本の祝祭日が出ますが、これは手動で設定して自作プラグインで表示しているものです。
INSERT INTO `holiday` VALUES ('2010-01-01', '元旦');
INSERT INTO `holiday` VALUES ('2010-01-11', '成人の日');
INSERT INTO `holiday` VALUES ('2010-02-11', '建国記念の日');
INSERT INTO `holiday` VALUES ('2010-03-21', '春分の日');
INSERT INTO `holiday` VALUES ('2010-03-22', '振替休日');
INSERT INTO `holiday` VALUES ('2010-04-29', '昭和の日');
INSERT INTO `holiday` VALUES ('2010-05-03', '憲法記念日');
INSERT INTO `holiday` VALUES ('2010-05-04', 'みどりの日');
INSERT INTO `holiday` VALUES ('2010-05-05', 'こどもの日');
INSERT INTO `holiday` VALUES ('2010-07-19', '海の日');
INSERT INTO `holiday` VALUES ('2010-09-20', '敬老の日');
INSERT INTO `holiday` VALUES ('2010-09-23', '秋分の日');
INSERT INTO `holiday` VALUES ('2010-10-11', '体育の日');
INSERT INTO `holiday` VALUES ('2010-11-03', '文化の日');
INSERT INTO `holiday` VALUES ('2010-11-23', '勤労感謝の日');
INSERT INTO `holiday` VALUES ('2010-12-23', '天皇誕生日');
あと、今上天皇の即位の礼20周年を祝う休日が今年限定で11月12日に設定される見込みでしたが、政権交代で廃案となったため、設定を解除しました。自民党系議員が特別国会で提出をする予定らしいですが、あと11日しかないのに今ごろ決まっても混乱するだけなのでやめてほしい……。

カテゴリー別新着記事を見せる
先日から、http://www.yuriko.net/arc/ の URL で「カテゴリー別新着」が見られるようにしました。この URL は、手書き HTML/自作ウェブログツールの時代では「最近 NN 日分」の記事を見せていたのですが、WordPress に変更してからは Not Found となっていました。Google ウェブマスターツールを利用するようになって、サイト内のリンク切れがつぶさに確認できるようになりましたが、このとき、/arc/ へのリンク切れが結構多いことに気がつきました。これではいかんということで対応したものです。
そもそも、当サイトの URL 体系が /YYYY/MM/DD/ じゃなくて /arc/YYYY/MM/DD/ とかにしたのは、サイトを構築するツールの変更を容易に行えるように準備したものです。/ 直下に YYYY を切る方が明らかに美しいですが、ツールの都合によってサブディレクトリーの下でないと設置しにくい場合に困ると考えたのです。結局、WordPress だと / 直下に入れることが容易だったため、この準備は冗長になっています。
今回はいろいろ試行錯誤しましたが、最終的には次の手法で落ち着きました。
- カテゴリー別新着用のページテンプレートを作ります。ページテンプレートには以下のようなコードを入れます。
get_categories()の引数ですが、サイドバーのカテゴリー一覧と同じ指定 (投稿数の降順) です。<div class="post hentry"> <h3>カテゴリー別新着</h3> <p> <?php $categories = get_categories('orderby=count&order=desc'); if (count($categories)) { ?> <dl> <?php foreach ($categories as $c) { query_posts('cat=' . intval($c->term_id) . '&posts_per_page=1&orderby=date&order=DESC'); if (have_posts()) { the_post(); printf('<dt>%1$s</dt><dd>' . . '<a href="%2$s">%3$s</a> (%4$s)</dd>' . "\n", wp_specialchars($c->name), get_permalink(), get_the_title(), get_the_time('Y-m-d H:i:s')); } } ?> </dl> <?php } ?> </p></div> - 固定ページを1つ作り、ページスラッグを「arc」とします。パーマリンク体系である「/arc/%year%/%monthnum%/%date%/%postname%/」と重複するような気がしますが、WordPress は投稿かページかをきちんと区別してくれて、/arc/2009/ ならば投稿 (の年別アーカイブ)、/arc/ ならば固定ページとして処理してくれます。
この手法は、パーマリンク体系が「/archives/%post_id%/」の場合にも応用できますね。この場合「/archives/」という URL になるような固定ページを作ればいいのです。パーマリンク体系が、ごく普通の「/%year%/%monthnum%/%date%/%postname%/」だったら、カテゴリー新着用には「/category/」という URL が適切でしょうか。

プライバシーポリシーを修正
本日、当サイトのプライバシー・ポリシーを修正しました。今まで、IP アドレスについては何も書いてなくて非常に曖昧だったため「IP アドレスは、その IP アドレスが使われた時刻が特定できる場合のみ、個人情報とみなす」というルールにしました。
これにより、「IP アドレスの一部を隠した場合は個人情報とみなさない」ことが明確になりました。今まで、嫌がらせコメントの一部で、ダミーの URL を書く輩に対しては、その対応策として IP アドレスの一部を隠したものと差し替えていましたが、それも明文化しました。
サイトの内容に対して反論するのは自由ですが、その場合は「誰なのか」ということを明確にして頂きますようお願いします。「顔」を見せずに反論するのは卑怯極まりないし、情けないです。

MT4i を採用
去年3月31日に WordPress を採用した当サイトですが、世間の潮流に逆らって、MT4i を採用することにしました。さすがに、2003年から公開されているソフトウェアだけに、作り込み度合いが違いますね。非常に高度なハックにより、携帯サイトの URL は従来と同じく「http://www.yuriko.net/」です。
なお、パソコンで見ても携帯風の表示になっているかもしれませんが、それは気のせいです


上に戻る





コメントの入れ子に対応
カテゴリー: WordPressハック, 更新履歴
タグ: WordPress 2.7, コメント, テンプレート
当サイトはすでに WordPress 2.7 になっているわけですが、テーマファイルを調整して、コメントの入れ子に対応しました。これによって、各コメントに「返信する」リンクが付くようになりました。「返信する」リンクの直下にコメントフォームが出るという Ajax 化は面倒だったので、コメントフォームは画面最下部のを使うようにしています。
WordPress 2.7 で導入された、コメントの入れ子やページ分割に対応するのは実は簡単で、comments.php のコメントループを
wp_list_comments()関数に入れ替えるだけです。しかし、各コメントのフォーマットは、wp-includes/comment-template.php で定義されたWalker_Commentクラスによる画面出力になってしまいます。wp_list_comments()の引数を調整することで、リスト方式を、ol, ul, div から選ぶことはできますが、名前→投稿日時→コメント内容という表示順序は決め打ちになります。これが気に入らなかったので、Walker_Commentを使用中テーマの functions.php にコピーしてクラス名を変更し、中身を改造することにしました。こうすれば出力順序は思いのままです。そして、comments.php ではwp_list_comments(array('walker' => new My_Walker_Comment))のようにすれば、自作クラスを使うことができます。従来の comments.php よりは改造がしにくくなったと言えますが、入れ子を実装するためには Walker クラスが必要なので仕方ないですね。[追記] よく調べると、Walker_Comment クラスをコピーする必要はありませんでした。Walker_Comment クラスの
start_el()メソッドの中身は、コールバック関数を指定して置き換えることが可能になっているからです。つまり、start_el()メソッドの$GLOBALS['comment'] = $comment;
の行以降をテーマの functions.php で定義し、それへのコールバックをwp_list_comments()の callback 引数として与えればよいです。例えば、以下のような感じです。functions my_list_comments($comment, $args, $depth) { $GLOBALS['comment'] = $comment; extract($args, EXTR_SKIP); if ( 'div' == $args['style'] ) { $tag = 'div'; $add_below = 'comment'; } else { $tag = 'li'; $add_below = 'div-comment'; } ?> <<?php echo $tag ?> <?php comment_class(empty( $args['has_children'] ) ? '' : 'parent') ?> id="comment-<?php comment_ID() ?>"> <?php if ( 'ul' == $args['style'] ) : ?> <div id="div-comment-<?php comment_ID() ?>"> <?php endif; ?> <div class="comment-author vcard"> <?php if ($args['avatar_size'] != 0) echo get_avatar( $comment, $args['avatar_size'] ); ?> <?php printf(__('<cite class="fn">%s</cite> <span class="says">says:</span>'), get_comment_author_link()) ?> </div> <?php if ($comment->comment_approved == '0') : ?> <em><?php _e('Your comment is awaiting moderation.') ?></em> <br /> <?php endif; ?> <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(), get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),' ','') ?></div> <?php comment_text() ?> <div class="reply"> <?php comment_reply_link(array_merge( $args, array('add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth']))) ?> </div> <?php if ( 'ul' == $args['style'] ) : ?> </div> <?php endif; ?> <?php }テーマの comments.php では、以下のようにします。
if (function_exists('wp_list_comments')) { wp_list_comments(array('callback' => 'my_list_comments')); } else { /* 従来のコメント表示処理 */ }