Bir sonraki sayfanın olup olmadığını belirleme


16

Wordpress geliştirmede yeniyim, sadece HTML'imi bir WordPress temasına dönüştürmeye çalışıyorum, Chris Coyer'in boş temasıyla başladım.

<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>

Sadece bir varsa div çıktısını nasıl verebilirim next_posts_link(). Sayfa <ul>numaram için kullanacağım için buna ihtiyacım var . Bunu yapmazsam, boş bir kurşun alacağım

Yanıtlar:


18

Bunların böyle olup olmadığını belirlemek için get_previous_posts_linkve tuşlarını kullanabilirsiniz get_next_posts_link:

$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>';
}

Bu yardımcı olur umarım


Tek sorun, potansiyel olarak geçersiz biçimlendirme üretecek boş bir liste oluşturabilir ve aslında kullanıcının mevcut kod ile aynı sorunu olacaktır ..
t31os

3
@ t31os, sanırım böyle bir şey yapacağımif ($prev_link || $next_link) // output ul
Jiew Meng

Evet bunu yapardı ..;)
t31os

Kodu güncelledi
Bainternet

Kod için teşekkürler, echo '</ul>';btw son satırından hemen önce eksik .
Davey

13

Bunu bir süre önce yazdım, ancak yine de geçerli olmalı:

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

functions.phpDosyanıza aşağıdaki işlevi ekleyebilirsiniz :

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

Kodunuzu şu şekilde güncelleyin:

<?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

en iyi çözüm kontrol etmektir $wp_query->max_num_pages, ancak şunları da kullanabilirsiniz:

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

1
Her $wp_queryyerde mevcut gibi görünmediğine dikkat etmek önemlidir ; örneğin, bir WooCommerce şablon geçersiz kılma içinde kullanmaya çalıştım ve nesne yoktu, bu yüzden functions.phpEric Martin'in cevabını kullanarak içeriden çağırmak zorunda kaldı .
Brett

Tabii ki, özel döngüler ve belki de woocommerce gibi bazı vakaların ele alınması gerekir. Sizin durumunuzda, woocommerce wp sorgusu veya oluşturduğu herhangi bir sorgu almak için nasıl kontrol etmelisiniz.
Maxwell sc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.