วิธีการตรวจสอบว่ามีหน้าถัดไป


16

ฉันยังใหม่ต่อการพัฒนาเวิร์ดเพรสเพียงแค่พยายามแปลง HTML เป็นธีม WordPress ฉันเริ่มต้นด้วยธีมว่างเปล่าของ 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>

ฉันจะเอาท์พุท 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>';
}

หวังว่าสิ่งนี้จะช่วย


ปัญหาเดียวที่มีคุณอาจอาจจะทำให้รายการที่ว่างเปล่าซึ่งจะผลิตมาร์กอัปที่ไม่ถูกต้องและมีผลบังคับใช้จะมีปัญหาเดียวกันผู้ใช้มีกับรหัสที่มีอยู่ ..
t31os

3
@ t31os, ฉันคิดว่าฉันจะทำอะไรที่เหมือนกันif ($prev_link || $next_link) // output ul
Jiew Meng

ใช่ว่าจะทำมัน .. ;)
t31os

อัปเดตรหัส
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แทนการใช้คำตอบของ Eric Martin
Brett

แน่นอนว่าบางกรณีเช่นลูปแบบกำหนดเองและอาจต้องมีการจัดการ woocommerce ในกรณีของคุณคุณควรตรวจสอบวิธีรับแบบสอบถาม wp ของ woocommerce หรือแบบสอบถามใด ๆ ที่สร้างขึ้น
Maxwell sc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.