get_posts_nav_link()
云策文档标注
概述
get_posts_nav_link() 函数用于检索文章分页导航链接,包括上一页和下一页的链接。它仅在非单篇文章页面(如存档页)中工作,并允许通过参数自定义分隔符和链接文本。
关键要点
- 函数返回一个字符串,包含上一页和下一页的导航链接,适用于分页查询。
- 参数 $args 可选,可自定义分隔符(sep)、上一页链接文本(prelabel)和下一页链接文本(nxtlabel)。
- 仅在 is_singular() 返回 false 时生成导航链接,确保只在列表页面显示。
- 内部使用 get_previous_posts_link() 和 get_next_posts_link() 构建链接,并处理分隔符逻辑。
代码示例
function get_posts_nav_link( $args = array() ) {
global $wp_query;
$return = '';
if ( ! is_singular() ) {
$defaults = array(
'sep' => ' — ',
'prelabel' => __( '« Previous Page' ),
'nxtlabel' => __( 'Next Page »' ),
);
$args = wp_parse_args( $args, $defaults );
$max_num_pages = $wp_query->max_num_pages;
$paged = get_query_var( 'paged' );
// Only have sep if there's both prev and next results.
if ( $paged = $max_num_pages ) {
$args['sep'] = '';
}
if ( $max_num_pages > 1 ) {
$return = get_previous_posts_link( $args['prelabel'] );
$return .= preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&$1', $args['sep'] );
$return .= get_next_posts_link( $args['nxtlabel'] );
}
}
return $return;
}注意事项
- 函数依赖于全局 $wp_query 对象,确保在正确的查询上下文中调用。
- 分隔符仅在同时存在上一页和下一页链接时显示,否则为空。
- 链接文本默认使用翻译函数 __(),支持国际化。
原文内容
Retrieves the post pages link navigation for previous and next pages.
Parameters
$argsstring|arrayoptional-
Arguments to build the post pages link navigation.
sepstringSeparator character. Default'—'.prelabelstringLink text to display for the previous page link.
Default ‘« Previous Page’.nxtlabelstringLink text to display for the next page link.
Default ‘Next Page »’.
Default:
array()
Source
function get_posts_nav_link( $args = array() ) {
global $wp_query;
$return = '';
if ( ! is_singular() ) {
$defaults = array(
'sep' => ' — ',
'prelabel' => __( '« Previous Page' ),
'nxtlabel' => __( 'Next Page »' ),
);
$args = wp_parse_args( $args, $defaults );
$max_num_pages = $wp_query->max_num_pages;
$paged = get_query_var( 'paged' );
// Only have sep if there's both prev and next results.
if ( $paged < 2 || $paged >= $max_num_pages ) {
$args['sep'] = '';
}
if ( $max_num_pages > 1 ) {
$return = get_previous_posts_link( $args['prelabel'] );
$return .= preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&$1', $args['sep'] );
$return .= get_next_posts_link( $args['nxtlabel'] );
}
}
return $return;
}
Changelog
| Version | Description |
|---|---|
| 2.8.0 | Introduced. |