2009年1月22日の投稿

2009-01-22
雨

過去のコメントを入れ子にする

ゆりこ による 16:48:47 の投稿
カテゴリー: WordPressハック
タグ: ,

WordPress 2.7 からコメントの入れ子 (スレッド) 表示が可能となりました。以前、テーマを改造して表示に対応したのですが、今回、データベースをいじって、過去のコメントについても入れ子表示させるようにしました。

やり方は、wp_comments テーブルに対して「返信コメントならば comment_parent カラムに親コメントの comment_ID を入れる」という修正を行います。phpMyAdmin ならば、複数のフィールドを修正できるので比較的ラクですが、1つの投稿に対して数10ものコメントが付いてて、親子関係が入り組んでいると、ちょっとやっかいです。ときどき、複数のコメントに対してまとめて回答しているときがあって、そのときは親子関係を定義できませんし……。

当サイトはコメントが 733 件もあるので、なかなか作業が進んでいません。今のところ、2008年8月以降のみ対応しました。少しずつ古いコメントにさかのぼって対応していきたいと思います。

[追記] 2008年4月1日以降の記事に対するコメントを修正しました。以前は独自ウェブログシステムでのコメントのため、入れ子にしなくてもいいかな、という気がします ;-) 自作プラグインに対するコメントだと、質問→回答の入れ子がすごく、ディスカッション設定で8階層まで OK にしないと、きちんとネストされませんでした。

携帯対応プラグイン Ktai Style バージョン 1.60 リリース

Ktai Style 1.60 サンプル画面

絵文字対応の WordPress 携帯対応プラグイン「Ktai Style」の安定版バージョン 1.60 をリリースいたしました。1.47 からの変更点は次の通りです。

  • 画像をインライン表示しているとき、元画像のサイズが 50KB 以下ならば元画像へのリンクを携帯用サムネール画像に直接付与するようにしました。それ以上のサイズの場合は、従来通り、画像の後ろに「元画像 (xxxKB)」というテキストリンクになります。
  • Flickr の画像はサムネールサイズ (75×100 または 100×75) の画像をインライン表示するようにしました。(すべての画像がリンクになる mova, ソフトバンク PDC を除く)
  • ドコモ FOMA, EZweb, ソフトバンク 3G での1ページ当たりの HTML サイズを約20KBに増量しました。分割せずに見られる範囲が広がっています。
  • 「携帯表示」の日時指定の仕様を変更し、「去年以前の日時」「今年の日時」で時刻部分を含めた書式を指定することにしました。これにより、「年月日を表示するときは時刻を省略する」といったカスタマイズが可能です。
  • 最新コメントの表示で、投稿者やピン送信元サイト名と、日時の表示を入れ替えて、日時の方に各コメントへのリンクを張るようにしました。
  • ログインせずゲストとしてコメント投稿したとき、クッキー対応の携帯電話の場合は、端末のクッキーに名前・メールアドレス・ウェブURLを保存するようにしました。
  • コメント投稿した後、投稿ページではなくコメント一覧表示に移動するようにしました。
  • WordPress 2.7 で導入された、コメント表示の入れ子表示・ページ分割に対応しました。
  • パスワード保護された投稿に付く絵文字を鍵マークに、非公開投稿に付く絵文字をマル秘にしました (従来は逆になっていました)。
  • Redportal テーマで、コメントの並び順を最新順/古い順で切り替えできるようにしました。また、「携帯表示」環境設定におけるコメントとトラックバック・ピンバックを混在する設定を反映するようにしました。さらに、コメント・また、EUC-JP 環境でも文字化けせず表示できるようになりました。
  • アメーバブログは、携帯電話の実機からは PC 向けアドレスでの閲覧で携帯向け表示に対応していたため、中継ページを出さないように修正しました。
  • 外部サイト接続確認ページを、redir.php というテンプレートで記述できるようにしました。従来は redir 独自フィルターフックを使って表示内容を書き換え可能でしたが、より柔軟なカスタマイズが可能です。
  • サーバー自体のタイムゾーン設定と、WordPress の一般設定で指定したタイムゾーンが一致していない場合に、今年かどうか、今日かどうかの判断がおかしかった不具合を修正しました (昨日の日時なのに時刻だけ表示してしまった etc)。
  • WordPress 2.6 以降で、wp-content ディレクトリーもしくは plugins ディレクトリーを標準の位置以外に移動している場合、ktai_style ディレクトリーに書き込み権限を与えておけば、プラグインの有効化時に、自動的に移設場所を検知するようになりました。
  • WordPress 2.7 において、携帯管理画面で英語表示が残っていたのを修正しました。
  • 管理機能を一新しました。
    • 利用できる WordPress バージョンを 2.5 以降としました。2.3.x 以前では管理機能が使えなくなりました。
    • 投稿の公開ステータスを変更できるようにしました。
    • 投稿者権限のユーザーが投稿作成したとき「レビュー待ちとして送信」ができるようにしました。
    • ページ編集・ページ作成に対応しました。
    • コメントの一括操作 (一括承認や一括削除など) をできるようにしました。
    • コメントの種類 (コメント/トラックバックとピンバック) で仕分けできるようにしました。
    • スパムに判定されたコメントを一覧できるようにしました。
  • 次の独自フィルターフックを追加しました: thumbnail_max_size, direct_link_image_size, mobile_search_ip
  • 次のテンプレートタグを追加しました: ks_cookie_available(), ks_get_time(), ks_get_mod_time(), ks_get_comment_datetime(), ks_get_ordered_link(), ks_get_comment_link(), ks_separate_comments()
ダウンロード: ktai_style160.zip (477.4 KB)
もっと新しいバージョンが出ています。

今回は、WordPress 2.7 対応と管理機構の一新がメインですが、それ以外にも細々とした改良を行なっています。コメントの入れ子 (スレッド) 表示およびページ分割が可能です。管理機構は、従来 WordPress 2.3 の機能をベースにしていましたが、画面デザインを 2.7 に準拠したものに刷新しました。

これに伴ない、携帯テーマのコードが多少変更されています。自作テーマを作成されている方は、附属テーマを参考にして修正をお願いします。

あと、日付書式の設定で、「時刻を入れたいときは明示的に指定する」ことが必須となりました。従来は、「去年の日付」「今年の日付」では時刻が強制的に付与されていましたが、今バージョンから、時刻を示すフォーマット文字を入れないことで、時刻を消すことが可能となっています。

携帯の画面サンプルは、Mac 版 Firefox に FireMobileSimulator を入れて画面キャプチャーしたものを使ってみました。Windows を起動しなくていいのが楽ですが、長い文字列の折り返しが不自然だったり、フォーム部品がはみだすことがある (Firefox 自体の問題?) のが難点ですね。