web-dev-qa-db-ja.com

ページネーションの最初のページにいるかどうかを判断する方法

ページネーションの最初のページにいるかどうかを判断するにはどうすればよいですか。私はWP_Pagenaviを使っています。ページネーションの最初のページでのみ関数を実行したいです。私はquery_varの 'paged'をチェックしました。このページでは0に設定されていて、それ以降のページでは2、3などとなっています。

ありがとう。

21
// 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
}
23
Brady

ページ付けされたページの最初のページにいることだけを知りたい場合は、 is_paged() を試してください。

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

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()
}

もともと私のブログに投稿されています here

4
iglvzx