2007年5月11日(金曜日)

wordpress モジュールにページャーをつける

カテゴリー: - Ryuji @ 17時08分59秒

つい最近になって気がついたのですが、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.

ƤˤϡޤȤդƤޤ

Ȥ

ʤߥȤդ뤳ȤϽޤ

10 queries. 0.010 sec.
Powered by WordPress Module based on WordPress ME & WordPress

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.