wordpress モジュールにページャーをつける
つい最近になって気がついたのですが、wordpress モジュール 0.3.3 では記事一覧に、ページャー(一覧が多いときに表示される「次の 10 件」とかってやつです)が無いんですね。
wordpress トップページでは設定した件数のみ一覧表示されますがカテゴリの記事一覧や、記者の記事一覧では、ページャー無しで、全件表示されてしまいます。
# そのため、php のメモリ制限を超えてしまって、エラーでとまってました(^^;
これじゃ不便だなぁとおもったので、ページャーをでっちあげてみました。
wordpress/wp-blog_header.php の 435 行目あたりに下記のようなコードがあります。
$where .= " GROUP BY {$wpdb->posts[$wp_id]}.ID";
$request = " SELECT $distinct * FROM {$wpdb->posts[$wp_id]} $join WHERE 1=1".$where." ORDER BY post_$orderby $limits";
この直前に下記コードを挿入します。
$total_count_query = " SELECT count(*) FROM {$wpdb->posts[$wp_id]} $join WHERE 1=1".$where;
$total_result = $xoopsDB->query($total_count_query);
list($total_count) = $xoopsDB->fetchRow($total_result);
require_once (XOOPS_ROOT_PATH.'/class/pagenav.php');
$params = array();
if(isset($_GET['cat'])){
$params[] = 'cat='.intval($_GET['cat']);
}
if(isset($_GET['author'])){
$params[] = 'author='.intval($_GET['author']);
}
// 月別アーカイブ用 2008-07-29 追記
if(isset($_GET['m'])){
$params[] = 'm='.intval($_GET['m']);
}
if(count($params)){
$extra = implode('&', $params);
}
$offset = intval($_REQUEST['wp_start']);
$limits = sprintf('LIMIT %d, %d',$offset, $posts_per_page);
$page_navi =& new XoopsPageNav($total_count, $posts_per_page, $offset, 'wp_start', $extra);
これで常に表示件数に制限がかかります。
ページャを表示させるには、お使いの wordpress テーマの index-template.php で、表示させたい箇所に下記を挿入します。
echo $page_navi->renderNav();
※ページャーカテゴリの記事一覧、記者の記事一覧のみ対応してます。
RSS feed for comments on this post.
ƤˤϡޤȤդƤޤ
Ȥ
ʤߥȤդ뤳ȤϽޤ