Nhiều vòng lặp WP_Query có phân trang


10

Có một vài câu hỏi khác về vấn đề này (và phân trang WP_Query dường như là một câu hỏi lớn đối với nhiều người) vì vậy tôi đang cố gắng thu hẹp chính xác cách làm cho nó hoạt động.

Tôi có thể tạo một vòng lặp tùy chỉnh duy nhất với phân trang mã này:

// http://weblogtoolscollection.com/archives/2008/04/19/paging-and-custom-wordpress-loops/
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$args = array(
    'showposts' => 2,
    'paged' => $paged
);
$wp_query->query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();

// The Post
the_title();
echo '<br>';
the_category(' ');
the_excerpt();
echo '<hr>';

endwhile;
// http://codex.wordpress.org/Function_Reference/paginate_links#Examples
$big = 999999999;
$pag_args = array(
    'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $wp_query->max_num_pages
);
echo paginate_links($pag_args);
$wp_query = null;
$wp_query = $temp;

... nhưng tự nhiên nếu tôi sao chép / dán vòng lặp này, nó hoạt động như một bản sao chính xác, nghĩa là, khi bạn nhấp vào "Trang 2", nó sẽ đưa bạn đến Trang 2 cho cả hai vòng.

Có cách nào để tách những thứ này ra khỏi nhau để mỗi ngôi chùa tách biệt?

Đây là toàn bộ mã hoàn chỉnh với vòng lặp trùng lặp nếu bất kỳ ai quan tâm đến việc thiết lập phiên bản địa phương của riêng họ và chơi với nó: http://paste.pocoo.org/show/573108/


nhìn vào bài đăng này mà tôi đã giải quyết vấn đề phân trang nhiều vòng cho chính mình wordpress.stackexchange.com/questions/126814/ chủ
ewroman

Câu trả lời:


18

Có, nó có thể được thực hiện. Điều quan trọng là làm cho formattham số khác nhau cho hai truy vấn:

    <!-- Cats -->
    <div class="animals">
        <?
            $paged1 = isset( $_GET['paged1'] ) ? (int) $_GET['paged1'] : 1;
            $paged2 = isset( $_GET['paged2'] ) ? (int) $_GET['paged2'] : 1;

            // Custom Loop with Pagination 1
            // http://codex.wordpress.org/Class_Reference/WP_Query#Usage
            $args1 = array(
                'paged'          => $paged1,
                'posts_per_page' => 2,
            );
            $query1 = new WP_Query( $args1 );

            while ( $query1->have_posts() ) : $query1->the_post();
                the_title();
                echo '<br>';
                the_category(' ');
                the_excerpt();
                echo '<hr>';
            endwhile;

            // http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
            $pag_args1 = array(
                'format'  => '?paged1=%#%',
                'current' => $paged1,
                'total'   => $query1->max_num_pages,
                'add_args' => array( 'paged2' => $paged2 )
            );
            echo paginate_links( $pag_args1 );
        ?>
    </div>

    <!-- Dogs -->
    <div class="animals">
        <?
            // Custom Loop with Pagination 2
            $args2 = array(
                'paged'          => $paged2,
                'posts_per_page' => 2,
            );
            $query2 = new WP_Query( $args2 );

            while ( $query2->have_posts() ) : $query2->the_post();
                the_title();
                echo '<br>';
                the_category(' ');
                the_excerpt();
                echo '<hr>';
            endwhile;

            $pag_args2 = array(
                'format'  => '?paged2=%#%',
                'current' => $paged2,
                'total'   => $query2->max_num_pages,
                'add_args' => array( 'paged1' => $paged1 )
            );
            echo paginate_links( $pag_args2 );
        ?>
    </div>

Cảm ơn bạn rất nhiều vì đã trả lời Boone. Tôi thấy những gì bạn đang nói, nhưng bất cứ khi nào tôi cố gắng thay đổi get_query_var, nó sẽ báo lỗi. Đây là mã được cập nhật: paste.pocoo.org/show/573208 Lỗi: Gọi hàm thành viên get () trên một đối tượng không trong C: \ wamp \ www \ wordpress_wp_query_pagination \ wp-gộp \ query.php trên dòng 27
Cory

Hai điều: 1) Bạn đang làm một số điều kỳ lạ với $wp_querytoàn cầu. (2) WP_QueryBản thân nó có một số điểm kỳ lạ khiến nó không thể sử dụng get_query_var()và một số chức năng khác với nó, vì vậy tôi thường tham khảo $_GETtrực tiếp siêu lớp, đảm bảo vệ sinh bằng cách sử dụng int. Tôi đã cập nhật câu trả lời của mình với một ví dụ hoạt động đầy đủ.
Hẻm núi Boone

Boone tuyệt vời! Cảm ơn rất nhiều, làm việc tuyệt vời. Thời gian nghiên cứu nó kỹ lưỡng. Công cụ WP_Query kỳ lạ là từ bài viết năm 2008 này: weblogtoolscollection.com/archives/2008/04/19/NH Tôi nghĩ rằng có lẽ get_query_var đã tìm nạp cùng một var, nhưng không có bộ não để lấy nó trực tiếp với $ _GET. Một lần nữa, cảm ơn rất nhiều người đàn ông. Đã chiến đấu với điều này mãi mãi.
Cory

Mát mẻ. Chúc may mắn!
Hẻm núi Boone

Ah tào lao. Muốn tiếp tục chiến đấu với tôi? :) Sau khi kiểm tra phiên bản của bạn, tôi nhận thấy nó không quay lại trang 1. Nó bị kẹt ở trang 2. Ngoài ra, khi bạn nhấp vào một trang khác, nó sẽ đặt lại vòng lặp khác. Có thể xâu chuỗi các biến $ _GET này lại với nhau để nó nhớ foo.com/?paged_1=2&paged_2=3 không?
Cory
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.