Як визначити, чи є наступна сторінка


16

Я новачок у розробці wordpress, просто намагаючись перетворити свій HTML в тему WordPress, я почав із порожньої теми Кріса Коєра.

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

Як я можу вивести div лише за наявності next_posts_link(). Мені це потрібно, як я буду використовувати <ul>для своєї сторінки. Якщо я цього не зроблю, я отримаю порожню кулю

Відповіді:


18

Ви можете використовувати get_previous_posts_linkта 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>';
}

Сподіваюся, що це допомагає


Єдиною проблемою є те, що ви потенційно зможете зробити порожній список, який створить недійсну розмітку, і фактично виникне та сама проблема, яку має користувач із наявним кодом ..
t31з

3
@ t31os, я думаю, я зроблю щось на кшталтif ($prev_link || $next_link) // output ul
Jiew Meng

Так, це зробить ..;)
t31до

Оновлено код
Bainternet

Дякуємо за код, він відсутній echo '</ul>';безпосередньо перед останнім рядком btw.
Дейві

13

Я писав це деякий час тому, але все одно має бути дійсним:

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

Ви можете додати у functions.phpфайл наступну функцію :

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

Оновіть свій код на:

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

найкраще рішення - перевірка $wp_query->max_num_pages, але ви також можете використовувати:

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

1
Важливо зауважити, що, $wp_queryздається , він не доступний скрізь; наприклад, я спробував використовувати його в рамках заміни шаблону WooCommerce, і об'єкт не існував, тому мені довелося викликати його зсередини functions.php, використовуючи відповідь Еріка Мартіна.
Бретт

Звичайно, потрібно вирішити деякі випадки, такі як користувацькі петлі та, можливо, кооперація. У вашому випадку ви повинні перевірити, як отримати WP-запит на woocommerce або будь-який запит, який він створює.
Максвелл sc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.