如何确定我是否在分页的首页上?


22

如何确定我是否在分页的第一页上?我正在使用WP_Pagenavi。我只想在分页的第一页上运行一个函数。我检查了query_var'paged',在此页面上将其设置为0,然后在随后的页面中将其设置为2,3,以此类推(缺少1!)...有人知道一个干净的解决方案吗?

谢谢。

Answers:


24
// get current page we are on. If not set we can assume we are on page 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// are we on page one?
if(1 == $paged) {
    //true
}

4
这是正确的,但是get_query_var( 'paged' )两次调用是多余的。该函数的可选第二个参数是默认值。因此,您可以将其简化为: $paged = get_query_var( 'paged', 1 );
Linnea Huxford,2016年

2017年8月:此代码不适用于我,其每页输出1个。然而,迈克尔的答案很完美。
Surjith SM

32

如果您只想知道自己位于分页页面的第一页,请尝试is_paged()

if ( !is_paged() ) {
  // first page of pagination
}

这个为我工作。(2017年8月)。不知怎的,答案标记为不正确的工作..
Surjith SM

优秀,干净,简单。
追踪DeCoy

4

我一直在寻找一种简单的方法来确定是否使用该posts_nav_link()功能,而我在网上发现的所有解决方案都过于复杂或不可靠。例如,许多人建议使用$paged全局变量,但是我发现即使第一页是唯一的页面,该变量也为第一页返回相同的值!

因此,我进入wp-includes/link-template.php文件,发现该posts_nav_link()函数只是输出另一个函数的返回值:

/**
 * Display post pages link navigation for previous and next pages.
 *
 * @since 0.71
 *
 * @param string $sep Optional. Separator for posts navigation links.
 * @param string $prelabel Optional. Label for previous pages.
 * @param string $nxtlabel Optional Label for next pages.
 */
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
    $args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
    echo get_posts_nav_link($args);
}

利用这些知识,我们可以创建一种简单有效的方法来确定是否需要添加链接以在页面之间导航:

$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
    // do not use posts_nav_link()
} else {
    // use posts_nav_link()
}

最初发布在我的博客在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.