Cara menentukan apakah ada halaman berikutnya


16

Saya baru mengenal pengembangan wordpress, hanya mencoba mengubah HTML saya menjadi tema WordPress, saya mulai dengan tema kosong Chris Coyer.

<div class="navigation">
    <div class="next-posts">
        <?php next_posts_link('&laquo; Older Entries') ?>
    </div>
    <div class="prev-posts">
        <?php previous_posts_link('Newer Entries &raquo;') ?>
    </div>
</div>

Bagaimana saya bisa menghasilkan div hanya jika ada next_posts_link(). Saya membutuhkan ini karena saya akan menggunakan <ul>untuk pagination saya. Jika saya tidak melakukan itu, saya akan mendapatkan peluru kosong

Jawaban:


18

Anda dapat menggunakan get_previous_posts_linkdan get_next_posts_link untuk menentukan apakah mereka ada seperti ini:

$prev_link = get_previous_posts_link(__('&laquo; Older Entries'));
$next_link = get_next_posts_link(__('Newer Entries &raquo;'));
// as suggested in comments
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>';
}

Semoga ini membantu


Satu-satunya masalah adalah Anda mungkin berpotensi membuat daftar kosong, yang akan menghasilkan markup yang tidak valid, dan pada dasarnya akan memiliki masalah yang sama dengan yang dimiliki pengguna dengan kode yang ada ..
t31os

3
@ t31os, saya kira saya akan melakukan sesuatu sepertiif ($prev_link || $next_link) // output ul
Jiew Meng

Ya itu akan melakukannya ..;)
t31os

Diperbarui kode
Bainternet

Terima kasih untuk kodenya, itu hilang echo '</ul>';tepat sebelum baris terakhir btw.
Davey

13

Saya menulis ini beberapa waktu yang lalu, tetapi masih harus valid:

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

Anda dapat menambahkan fungsi berikut ke functions.phpfile Anda :

/**
 * If more than one page exists, return TRUE.
 */
function show_posts_nav() {
    global $wp_query;
    return ($wp_query->max_num_pages > 1);
}

Perbarui kode Anda ke:

<?php if (show_posts_nav()) : ?>
<div class="navigation">
    <div class="next-posts"><?php next_posts_link('&laquo; Older Entries') ?></div>
    <div class="prev-posts"><?php previous_posts_link('Newer Entries &raquo;') ?></div>
</div>
<?php endif; ?>

3

solusi terbaik adalah memeriksa $wp_query->max_num_pages, tetapi Anda juga dapat menggunakan:

<?php
if(paginate_links()) {
...
}

1
Penting untuk dicatat bahwa $wp_querytampaknya tidak tersedia di mana-mana; misalnya, saya mencoba menggunakannya di dalam template WooCommerce dan objek tidak ada, jadi saya harus menyebutnya dari dalam functions.phpdengan menggunakan jawaban Eric Martin.
Brett

Tentu saja, beberapa kasus seperti loop kustom dan mungkin woocommerce perlu ditangani. Dalam kasus Anda, Anda harus memeriksa cara mendapatkan kueri wp dari woocommerce atau permintaan apa pun yang dihasilkannya.
Maxwell sc
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.