ページネーションの最初のページにいるかどうかを確認するにはどうすればよいですか?WP_Pagenaviを使用しています。ページネーションの最初のページでのみ機能を実行したい。query_var 'paged'をチェックしました。このページでは0に設定され、その後のページでは2、3などに設定されています(1はありません!)。
ありがとう。
ページネーションの最初のページにいるかどうかを確認するにはどうすればよいですか?WP_Pagenaviを使用しています。ページネーションの最初のページでのみ機能を実行したい。query_var 'paged'をチェックしました。このページでは0に設定され、その後のページでは2、3などに設定されています(1はありません!)。
ありがとう。
回答:
// 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
}
ページ分割されたページの最初のページにいることだけを知りたい場合は、以下を試してくださいis_paged()
。
if ( !is_paged() ) {
// first page of pagination
}
この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()
}
get_query_var( 'paged' )
2回呼び出すのは冗長です。この関数のオプションの2番目のパラメーターはデフォルト値です。だから、あなたはそれを簡略化することができます:$paged = get_query_var( 'paged', 1 );