Cum să determini dacă există o pagină următoare

12 feb. 2011, 13:56:15
Vizualizări: 30.5K
Voturi: 18

Sunt începător în dezvoltarea WordPress și încerc să convertesc HTML-ul meu într-o temă WordPress, am început cu tema blank a lui Chris Coyer.

<div class="navigation">
    <div class="next-posts">
        <?php next_posts_link('&laquo; Intrări mai vechi') ?>
    </div>
    <div class="prev-posts">
        <?php previous_posts_link('Intrări mai noi &raquo;') ?>
    </div>
</div>

Cum pot afișa div-ul doar dacă există un next_posts_link(). Am nevoie de asta deoarece voi folosi <ul> pentru paginarea mea. Dacă nu fac asta, voi obține un bullet gol

0
Toate răspunsurile la întrebare 3
5
20

Puteți folosi get_previous_posts_link și get_next_posts_link pentru a determina dacă acestea există astfel:

$prev_link = get_previous_posts_link(__('&laquo; Înregistrări mai vechi'));
$next_link = get_next_posts_link(__('Înregistrări mai noi &raquo;'));
// după cum se sugerează în comentarii
if ($prev_link || $next_link) {
  echo '<ul class="navigation">';
  if ($prev_link){
    echo '<li>'.$prev_link .'</li>';
  }
  if ($next_link){
    echo '<li>'.$next_link .'</li>';
  }
  echo '</ul>';
}

Sper că acest lucru vă ajută

12 feb. 2011 14:12:00
Comentarii

Singura problemă este că ai putea afișa o listă goală, ceea ce va genera markup invalid și, în efect, va avea aceeași problemă pe care o are utilizatorul cu codul existent.

t31os t31os
12 feb. 2011 14:38:12

@t31os, cred că voi face ceva de genul if ($prev_link || $next_link) // output ul

Jiew Meng Jiew Meng
12 feb. 2011 15:16:30

Da, asta ar rezolva problema.. ;)

t31os t31os
12 feb. 2011 16:32:57

Am actualizat codul

Bainternet Bainternet
12 feb. 2011 19:49:38

Mulțumesc pentru cod, îi lipsește echo '</ul>'; chiar înainte de ultima linie, apropo.

Davey Davey
4 feb. 2017 15:00:09
0
14

Am scris acest lucru acum ceva timp, dar ar trebui să fie încă valabil:

http://www.ericmmartin.com/conditional-pagepost-navigation-links-in-wordpress-redux/

Puteți adăuga următoarea funcție în fișierul functions.php:

/**
 * Dacă există mai mult de o pagină, returnează TRUE.
 */
function show_posts_nav() {
    global $wp_query;
    return ($wp_query->max_num_pages > 1);
}

Apoi actualizați codul la:

<?php if (show_posts_nav()) : ?>
<div class="navigation">
    <div class="next-posts"><?php next_posts_link('&laquo; Înregistrări mai vechi') ?></div>
    <div class="prev-posts"><?php previous_posts_link('Înregistrări mai noi &raquo;') ?></div>
</div>
<?php endif; ?>
13 feb. 2011 00:45:03
2

cea mai bună soluție este verificarea $wp_query->max_num_pages, dar poți folosi și:

<?php
if(paginate_links()) {
...
}
9 nov. 2018 18:26:25
Comentarii

Este important de remarcat că $wp_query nu pare să fie disponibil peste tot; de exemplu, am încercat să îl folosesc într-un șablon suprascris WooCommerce și obiectul nu exista, așa că a trebuit să îl apelez din functions.php folosind răspunsul lui Eric Martin.

Brett Brett
27 ian. 2019 21:40:42

Desigur, unele cazuri precum bucle personalizate și poate WooCommerce trebuie tratate separat. În cazul tău, ar trebui să verifici cum să obții wp query-ul WooCommerce sau orice alt query pe care îl generează.

Maxwell s.c Maxwell s.c
27 ian. 2019 23:02:33