커스텀 포스트 wp_pagnation
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$loop = new WP_Query(
array(
'post_type' => 'html5-blank',
'posts_per_page' => 5,
'paged'=>$paged
)
);
?>
<?php if ($loop->have_posts()): while ($loop->have_posts()) : $loop->the_post(); ?>
//Loop Code Here..
<?php wp_reset_query(); ?>
<nav>
<?php previous_posts_link( 'Newer posts »' ); ?>
<?php next_posts_link('Older »') ?>
</nav>
<?php endwhile; ?>
<?php else: ?>
다음 페이지의 URL은 입력 결과입니다.www.mywebsite.com/blog/page/2은 동작하고 있습니다만, 페이지 링크를 표시할 수 없습니다.
어디가 잘못됐나요?
편집: 페이지 연결 링크가 에 표시되어 있습니다.page/2/
메인 블로그 페이지에는 없습니다.왜요?
커스텀 포스트 wp_query에서 페이지 번호 매기기에는 3가지 방법이 있습니다.불행히도 오늘날까지 이 문제에 대한 좋은 정보가 많이 없거나 적어도 어떤 경우에는 무엇이 있는지 불분명합니다.이게 도움이 됐으면 좋겠네요!
wp_reset_postdata()도 잘못된 위치에 있지만 올바르게 동작하려면 더 많은 정보가 필요합니다.
옵션 1 - max_num_pages 변수 사용
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => 1,
'paged' => $paged,
'post_type' => 'cpt_type'
);
$cpt_query = new WP_Query($args);
?>
<?php if ($cpt_query->have_posts()) : while ($cpt_query->have_posts()) : $cpt_query->the_post(); ?>
//Loop Code Here...
<?php endwhile; endif; ?>
<nav>
<ul>
<li><?php previous_posts_link( '« PREV', $cpt_query->max_num_pages) ?></li>
<li><?php next_posts_link( 'NEXT »', $cpt_query->max_num_pages) ?></li>
</ul>
</nav>
위에는 약간 다른 포맷이 표시됩니다.previous_posts_link
그리고.next_posts_link
액세스 할 수 있게 되었습니다.max_num_pages
변수.액세스 할 때는 반드시 독자적인 쿼리 변수명을 사용해 주세요.max_num_pages
$cpt_query는 쿼리 예의 변수이기 때문에 사용하고 있습니다.
옵션 2 - 루프 쿼리에 일시적으로 $wp_query 변수를 사용합니다.
이는 많은 사람들이 권장하는 것이지만 $wp_query 변수를 temp 변수에 할당하고 다시 할당하지 않으면 모든 종류의 문제가 발생합니다.그렇기 때문에 옵션 #1을 추천합니다.CSS Tricks에서 설명한 바와 같이 다음과 같은 작업을 수행할 수 있습니다.
<?php
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query->query('showposts=6&post_type=news'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<!-- LOOP: Usual Post Template Stuff Here-->
<?php endwhile; ?>
<nav>
<?php previous_posts_link('« Newer') ?>
<?php next_posts_link('Older »') ?>
</nav>
<?php
$wp_query = null;
$wp_query = $temp; // Reset
?>
옵션 3 - WP-pagenavi 플러그인 사용
다른 옵션과 마찬가지로 WP-pagenavi 플러그인을 사용하여 옵션 #1과 같이 쿼리를 셋업할 수 있습니다.단, 코드를 한 번 변경하여 요소 내의 모든 것을 제거하고 플러그인을 설치한 후 이 함수로 대체합니다.마지막은 다음과 같습니다.
<nav>
<?php wp_pagenavi( array( 'query' => $cpt_query ) ); ?>
</nav>
내 생각엔 네가<?php wp_reset_query(); ?>
잘못된 장소에..다음 페이지 번호나 다음 페이지 번호여야 하는 거 아니에요?
이와 같은 것
<?php endwhile; ?>
<?php else: ?>
<?php wp_reset_query(); ?>
이 질문은 @Trevor에 의해 매우 적절하게 답변되었지만, 저는 번호부여를 실장할 필요가 있었고, 더 많은 연구가 필요했습니다.내 코드가 다른 사람이 번호부여를 구현하는 데 도움이 되었으면 합니다.
<div class="frontpage-posts">
<?php
if (get_query_var('paged')) {
$paged = get_query_var('paged');
} elseif (get_query_var('page')) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query('posts_per_page=12&paged=' . $paged);
if ($wp_query->have_posts()) :
while ($wp_query->have_posts()) : $wp_query->the_post();
echo the_title();
endwhile; ?>
<nav>
<?php
the_posts_pagination(array(
'mid_size' => 2,
'prev_text' => __('Back', 'textdomain'),
'next_text' => __('Onward', 'textdomain'),
));
?>
</nav>
<?php
$wp_query = null;
$wp_query = $temp;
wp_reset_postdata();
endif;
?>
</div>
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'wp-rest-api-log',
'posts_per_page' => 5,
'paged' => $paged,
'orderby' => 'date',
);
$loop = new WP_Query( $args );
if ($loop->have_posts()) :
while ($loop->have_posts()) : $loop->the_post();
echo the_title();
endwhile;
echo "<nav class=\"sw-pagination\">";
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $loop->max_num_pages
) );
echo "</nav>";
endif;
wp_reset_query();
<?php
add_shortcode('show_all_news', 'show_all_news');
function show_all_news($atts) {
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$limit = 4;
$offset = ( $limit * $paged ) - $limit;
$atts['pages'] = $paged;
$atts['post-type'] = 'your_custom_post_type';
$atts['orderby'] = 'date';
$atts['order'] = 'DESC';
$atts['offset'] = $offset;
$atts['posts_per_page'] = $limit;
$atts['caller_get_posts'] = 1;
$result = new WP_Query($atts);
echo '<div class="news-cont">';
if($result->have_posts())
{
while ($result->have_posts()) : $result->the_post();
echo '<div class="bg-white news-block">';
echo '<em class="date">'. get_the_date().'</em>' ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php
echo "<p>";
the_excerpt();
echo "</p>";
echo '</div>';
endwhile;
?>
<ul class="pagination" style="width:100%;">
<li id="previous-posts" style="float:left">
<?php previous_posts_link( '<< Vorige Pagina', $result->max_num_pages ); ?>
</li>
<li id="next-posts" style="float:right">
<?php next_posts_link( 'Volgende Pagina >>', $result->max_num_pages ); ?>
</li>
</ul>
<?php
}
echo '</div>';
wp_reset_query();
}
언급URL : https://stackoverflow.com/questions/14595709/pagination-on-custom-post-wp-query
'it-source' 카테고리의 다른 글
유형 선언의 @typescript-eslint/no-discript-false positive false 긍정 (0) | 2023.02.22 |
---|---|
numpy 유형을 python으로 변환 (0) | 2023.02.22 |
iis7의 워드프레스 URL에서 index.php를 제거합니다. (0) | 2023.02.22 |
JSON을 소독할 필요가 있습니까? (0) | 2023.02.22 |
헤더에서 워드프레스 피드 URL을 삭제/제거하는 방법 (0) | 2023.02.22 |