페이지 매김을 사용하는 여러 WP_Query 루프


10

이것에 대한 몇 가지 다른 질문이 있으며 WP_Query 페이지 매김이 많은 사람들에게 큰 질문 인 것 같습니다. 그래서 기능을 만드는 방법을 정확히 좁히려 고합니다.

이 코드를 페이지 매김하여 단일 사용자 정의 루프를 만들 수 있습니다.

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

...하지만 자연스럽게이 루프를 복사 / 붙여 넣기하면 정확한 복제본으로 작동합니다. 즉, "2 페이지"를 클릭하면 루프 모두에 대해 2 페이지로 이동합니다.

이것을 서로 분리하여 각 페이지를 개별적으로 분리하는 방법이 있습니까?

누구나 자신의 로컬 버전을 설정하고 그것에 관심이 있다면 중복 루프가있는 전체 코드가 있습니다 : http://paste.pocoo.org/show/573108/


내가 스스로 여러 루프 페이지 매김 문제를 해결 한이 게시물을보십시오 wordpress.stackexchange.com/questions/126814/…
ewroman

답변:


18

그렇습니다. 핵심은 format두 쿼리에 대해 매개 변수를 다르게 만드는 것입니다 .

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

Boone에게 답장을 보내 주셔서 대단히 감사합니다. 무슨 말인지 알지만 get_query_var를 변경하려고 할 때마다 오류가 발생합니다. 업데이트 된 코드는 다음과 같습니다. paste.pocoo.org/show/573208 오류 : 27 행의 C : \ wamp \ www \ wordpress_wp_query_pagination \ wp-includes \ query.php에있는 비 객체에서 멤버 함수 get () 호출
Cory

두 가지 : 1) 당신은 $wp_query세계 와 이상한 일을하고 있습니다. (2) 그 WP_Query자체로는 사용 불가능하고 get_query_var()다른 기능 이있는 구현상의 이상한 점이 있으므로 일반적으로 $_GET슈퍼 글로벌을 직접 참조하여 에 캐스팅하여 위생 처리하십시오 int. 전체 예제를 사용하여 답변을 업데이트했습니다.
Boone Gorges

굉장한 분! 정말 고마워요, 잘 작동합니다. 철저히 공부할 시간입니다. 이상한 WP_Query 항목은이 2008 기사에서 나온 것입니다 : weblogtoolscollection.com/archives/2008/04/19/… get_query_var가 같은 var를 가져 왔을 지도 모르지만 $ _GET으로 직접 가져올 두뇌가 없었습니다. 다시 한번 감사드립니다. 이것과 영원히 싸웠습니다.
Cory

멋있는. 행운을 빕니다!
Boone Gorges

헛소리 나랑 계속 싸울 까? :) 버전을 테스트 한 후 1 페이지로 돌아 가지 않는 것으로 나타났습니다. 2 페이지에서 멈추었습니다. 또한 다른 페이지를 클릭하면 다른 루프가 재설정됩니다. 이 $ _GET 변수를 함께 묶어 foo.com/?paged_1=2&paged_2=3 을 기억할 수 있습니까?
Cory
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.