WP-PageNavi のおかしな挙動

2006年12月17日

WP-PageNaviを導入してみると、ページ数が問答無用で999999になる現象に頭を悩ませる。
ソースを追ってみると、36行目からの

if (get_query_var('what_to_show') == 'posts') {
preg_match('#FROM\s(.*)\sGROUP BY#siU', $request, $matches);
//preg_match('#FROM\s(.*)\sORDER BY#siU', $request, $matches);
$fromwhere = $matches[1];
$numposts = $wpdb->get_var("SELECT COUNT(DISTINCT ID) FROM $fromwhere");
$max_page = ceil($numposts /$posts_per_page);
} else {
$max_page = 999999;
}

という部分があやしそう。条件分岐の部分が常に偽となってるっぽいので、get_query_var('what_to_show’) でぐぐって見ると、こんな情報がヒット。

私のところではDC nicer archiveは入れていませんが、最大表示数を投稿数ではなく日数で設定すると同様の現象がおきます。
#オプション⇒表示設定

仕様…なんですかね。
(中略)
そもそも正しく動作しない気がします。
wp_pagenaviも同様のつくりになっていますので、結果も同様です。

ということで、最大表示数を投稿数ではなく日数で設定することが問題の模様。

確かに表示の設定を日数分から記事の件数に変更したら、正常に動作しました。日付で動作するナイスなハックはないものでしょうか。こだわりは別にないのですが。

関連サイト

AOINA.COM :: UTW(Ultimate Tag Warrior)を導入して気づいた点
UTWと併用するとバグるらしいので、その修正。