Làm thế nào để xác định nếu tôi ở trang đầu tiên của phân trang?


22

Làm cách nào để xác định xem tôi có ở trang đầu tiên của phân trang không? Tôi đang sử dụng WP_Pagenavi. Tôi muốn chạy một chức năng chỉ trên trang đầu tiên của phân trang. Tôi đã kiểm tra query_var 'paged', nó được đặt thành 0 trên trang này và sau đó 2, 3 và cứ thế trong các trang sau (1 bị thiếu!) ... Có ai biết một giải pháp sạch không?

Cảm ơn.

Câu trả lời:


24
// get current page we are on. If not set we can assume we are on page 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// are we on page one?
if(1 == $paged) {
    //true
}

4
Điều này là chính xác, nhưng gọi get_query_var( 'paged' )hai lần là dư thừa. Tham số thứ hai tùy chọn của hàm đó là giá trị mặc định. Vì vậy, bạn có thể đơn giản hóa nó thành: $paged = get_query_var( 'paged', 1 );
Linnea Huxford

Tháng 8 năm 2017: Cái này không hoạt động với tôi, nó xuất ra 1 trên mỗi trang. Tuy nhiên, câu trả lời của Michael đã làm việc hoàn hảo.
Surjith SM

32

nếu bạn chỉ muốn biết rằng bạn đang ở trang đầu tiên của trang được phân trang, hãy thử is_paged():

if ( !is_paged() ) {
  // first page of pagination
}

Cái này làm việc cho tôi (Tháng 8 năm 2017). Bằng cách nào đó câu trả lời được đánh dấu là không hoạt động ..
Surjith SM

Tuyệt vời, sạch sẽ và đơn giản.
Trace DeCoy

4

Tôi đang tìm kiếm một cách đơn giản để xác định xem có nên sử dụng posts_nav_link()chức năng hay không và tất cả các giải pháp tôi tìm thấy trực tuyến đều quá phức tạp hoặc không đáng tin cậy. Ví dụ, nhiều người đề xuất sử dụng $pagedbiến toàn cục, nhưng tôi thấy rằng biến này trả về cùng một giá trị cho trang đầu tiên, ngay cả khi trang đầu tiên là trang duy nhất!

Vì vậy, tôi đã đào sâu vào wp-includes/link-template.phptệp và thấy rằng posts_nav_link()hàm chỉ đơn giản là xuất giá trị trả về của hàm khác:

/**
 * Display post pages link navigation for previous and next pages.
 *
 * @since 0.71
 *
 * @param string $sep Optional. Separator for posts navigation links.
 * @param string $prelabel Optional. Label for previous pages.
 * @param string $nxtlabel Optional Label for next pages.
 */
function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
    $args = array_filter( compact('sep', 'prelabel', 'nxtlabel') );
    echo get_posts_nav_link($args);
}

Sử dụng kiến ​​thức này, chúng tôi có thể tạo một cách đơn giản và hiệu quả để xác định xem chúng tôi có cần thêm liên kết để điều hướng giữa các trang hay không:

$posts_nav = get_posts_nav_link();
if(empty($posts_nav)) {
    // do not use posts_nav_link()
} else {
    // use posts_nav_link()
}

Ban đầu được đăng trên blog của tôi ở đây .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.