Jak ustalić, czy jestem na pierwszej stronie paginacji?


22

Jak ustalić, czy jestem na pierwszej stronie paginacji? Używam WP_Pagenavi. Chcę uruchomić funkcję tylko na pierwszej stronie paginacji. Sprawdziłem „paged” query_var, jest ustawiony na 0 na tej stronie, a następnie 2, 3 itd. Na późniejszych stronach (brakuje 1!) ... Czy ktoś zna czyste rozwiązanie?

Dzięki.

Odpowiedzi:


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
Jest to poprawne, ale get_query_var( 'paged' )podwójne dzwonienie jest zbędne. Opcjonalny drugi parametr tej funkcji jest wartością domyślną. Możesz więc uprościć to do: $paged = get_query_var( 'paged', 1 );
Linnea Huxford

Sierpień 2017: Ten nie działa dla mnie, jego wydajność wynosi 1 na każdej stronie. Jednak odpowiedź Michaela działała idealnie.
Surjith SM

32

jeśli chcesz tylko wiedzieć, że jesteś na pierwszej stronie stronicowanej strony, spróbuj is_paged():

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

Ten działał dla mnie. (Sierpień 2017). Jakoś odpowiedź oznaczona jako poprawna nie działa.
Surjith SM

Doskonałe, czyste i proste.
Śledzenie DeCoy

4

Szukałem prostego sposobu na określenie, czy użyć tej posts_nav_link()funkcji, a wszystkie rozwiązania znalezione w Internecie były zbyt złożone lub zawodne. Na przykład wiele osób sugerowało użycie$paged zmiennej globalnej, ale odkryłem, że ta zmienna zwróciła tę samą wartość dla pierwszej strony, nawet jeśli pierwsza strona była jedyną stroną!

Więc wkopałem się w wp-includes/link-template.phpplik i stwierdziłem, że posts_nav_link()funkcja po prostu wyświetla wartość zwracaną przez inną funkcję:

/**
 * 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);
}

Korzystając z tej wiedzy, możemy stworzyć prosty i skuteczny sposób ustalenia, czy musimy dodawać linki do nawigacji między stronami:

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

Pierwotnie opublikowany na moim blogu tutaj .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.