<?php echo '(Page '.$page.' of '.$numpages.')'; ?>
它在每个页面上只显示1页,共1页。 >奇妙
#1 楼
当WordPress使用这种分页时,会键入一个查询变量$paged
。因此,第1页是$paged=1
,第15页是$paged=15
。您可以使用以下代码获取此变量的值:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
获取总页数比较麻烦。首先,您必须计算数据库中的所有帖子。然后过滤发布的依据(相对于草稿,计划的,垃圾分类等)。然后,您必须将此计数除以您希望在每个页面上显示的帖子数:
$total_post_count = wp_count_posts();
$published_post_count = $total_post_count->publish;
$total_pages = ceil( $published_post_count / $posts_per_page );
我还没有对此进行测试,但是您可能需要以与获取
$posts_per_page
相同的方式(使用$paged
)获取get_query_var()
。#2 楼
您可以只用一行代码来完成此操作,但是再一次,您可能想在其他地方添加代码,因此通常使用一个函数更为有用。function current_paged( $var = '' ) {
if( empty( $var ) ) {
global $wp_query;
if( !isset( $wp_query->max_num_pages ) )
return;
$pages = $wp_query->max_num_pages;
}
else {
global $$var;
if( !is_a( $$var, 'WP_Query' ) )
return;
if( !isset( $$var->max_num_pages ) || !isset( $$var ) )
return;
$pages = absint( $$var->max_num_pages );
}
if( $pages < 1 )
return;
$page = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
echo 'Page ' . $page . ' of ' . $pages;
}
注意:代码可以进入函数文件。
只需在要显示“ Page x of y”消息的地方调用函数,例如
/>
如果您需要代码来使用自定义查询,即您使用
WP_Query
创建的查询,然后只需将保存查询的变量名传递给函数。不存在的查询示例:
<?php current_paged(); ?>
使用先前发布的功能获取自定义查询的当前页面。您正在寻找单线飞机,那么应该这样做。.
$fred = new WP_Query;
$fred->query();
if( $fred->have_posts() )
... etc..
希望有帮助.. :)
评论
如果是我,我将检查$ var是否为查询:if(is_a($ var,'WP_Query'))如果是查询对象,则将返回true。
– John P Bloch
2011-3-18 14:30
是的,这实际上是一个非常明智的想法!
– t31os
2011年4月16日在10:18
#3 楼
如上所述,一种获取最大页面数的简单方法是: global $wp_query
$wp_query->max_num_pages
#4 楼
适用于我所有存档页面的一个选项是:$paged_maxnum = $GLOBALS['wp_query']->max_num_pages;
if ( $paged_maxnum > 1 ) {
$paged_current_page = get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : 1;
$title_page_nrs = 'page nr ' . $paged_current_page . ' of ' . $paged_maxnum;
echo '<title>' . get_the_archive_title( '', false ) . ' - ' . $title_page_nrs . ' | Your Website Name</title>';
} else {
echo '<title>' . get_the_archive_title( '', false ) . ' | Your Website Name</title>';
}
首先查询此
wp_query
中是否有多个页面,然后通过$paged_current_page
将标题与当前页面连接起来和总页数为$title_page_nrs
。最后echo
它。如果第一页以上,则如果未分页,则为else
。这进入我的archive.php或此类模板。它产生:<title>Taxonomy title - page nr 1 of 4 | Your Website Name</title>
<title>Taxonomy title | Your Website Name</title>
评论
为什么不使用$ wp_query-> max_num_pages?
– t31os
2011-3-18在15:47
这是一个不错的选择。我完全忘记的$ wp_query的一部分在那儿:-/
–EAMann
2011-3-18在17:49
@EAMann顺便说一句:还有found_posts属性“找到与当前查询参数匹配的帖子总数”,wp_count_posts()有点麻烦。
–jave.web
17年3月13日在14:31