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.