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


22

ページネーションの最初のページにいるかどうかを確認するにはどうすればよいですか?WP_Pagenaviを使用しています。ページネーションの最初のページでのみ機能を実行したい。query_var 'paged'をチェックしました。このページでは0に設定され、その後のページでは2、3などに設定されています(1はありません!)。

ありがとう。

回答:


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' )2回呼び出すのは冗長です。この関数のオプションの2番目のパラメーターはデフォルト値です。だから、あなたはそれを簡略化することができます: $paged = get_query_var( 'paged', 1 );
リネアHuxford

2017年8月:これは私には機能しません。すべてのページに1を出力します。しかし、マイケルの答えは完璧に機能しました。
Surjith SM

32

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

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

これは私のために働いた。(2017年8月)。どういうわけか、正しく動作していない。..としてマーク答える
Surjith SM

優れた、きれいでシンプル。
トレースデコイ

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

もともとは私のブログにここに投稿されました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.