疯狂自定义作者页面上的分页帮助

时间:2012-02-24 作者:Matt Chandler

我有一个多作者博客的自定义作者页面。

http://blog.securitytechnologies.com/meet-the-team/

以下是我用来生成页面的代码(感谢支持论坛中的其他人提供):

<?php
$excluded = "1,2,3,7,20,21";  // To exclude external admin author IDs
$sql = "SELECT DISTINCT post_author, umeta.meta_value as last_name
FROM $wpdb->posts
JOIN $wpdb->usermeta umeta ON ($wpdb->posts.post_author = umeta.user_id
AND umeta.meta_key = \'last_name\')
WHERE post_author NOT IN ($excluded)
AND post_status = \'publish\'
AND post_type = \'post\'
ORDER BY last_name, post_author
";
$authors = $wpdb->get_results($sql);    
if($authors):
foreach($authors as $author):
?>    
我搞不懂的是如何设置每页和分页的最大作者数。我已经安装了WP PageNavi,但我没有在自定义模板页面上实现它。

提前谢谢。

1 个回复
SO网友:Nate Cook

我怀疑您是否能够为此重新调整WP PageNavi的用途,因为您根本没有使用内置查询。不过,您应该能够自己进行分页,并且仍然可以依赖WordPress的一些内置功能。

特别是,如果您的URL与模式/会见团队/页面/3/匹配,则paged querystring变量将自动填充为3. 您可以使用它,然后在列表中循环查找正确的作者。下面是一些快速代码:

<?php
$authors_per_page = 5;
$page_number = preg_replace("/[^0-9]/", "", $_GET["paged"]); // don\'t trust querystring vars
if (empty($page_number))
    $page_number = 1;

$excluded = "1,2,3,7,20,21";  // To exclude external admin author IDs
$sql = "..."; // SQL unchanged, omitted

$authors = $wpdb->get_results($sql);    
if ($authors) :
    $author_count = count($authors);
    $first_author = ($page_number - 1) * $authors_per_page;
    $last_author = min($first_author + $authors_per_page, $author_count);

    foreach ($i = $first_author; $i < $last_author; $i++) :
?>    

<!-- display author -->

<?php
    endforeach;

    // show previous and next page links
    if ($page_number > 1) {
        echo \'<a href="/meet-the-team/page/\' . ($page_number - 1) . \'/">Previous page</a>\';
    }
    if ($last_author < $author_count) {
        echo \'<a href="/meet-the-team/page/\' . ($page_number + 1) . \'/">Next page</a>\';
    }

endif;
?>

结束

相关推荐

AJAX search posts and pages

我正在尝试制作一个插件,在这里我需要创建一个AJAX搜索。Im使用中描述的方法http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/ 执行ajax调用。到目前为止一切都很好。问题是不确定如何在我的ajax函数中检索搜索结果。第一次尝试使用WP\\U查询,如下所示:$query= new WP_Query( array( \'post_type\'=> \'any\',\'post_status\' => \'publ