워드프레스, 하위 페이지에 더 많은 게시물 표시
내 서브페이지에 더 많은 게시물을 표시하고 싶다.
함수에 내 코드가 있어php
function number_of_posts($query)
{
if($query->is_main_query())
{
$paged = $query->get( 'paged' );
if ( ! $paged || $paged < 2 )
{
}
else
{
$query->set('posts_per_page', 24);
}
}
return $query;
}
add_filter('pre_get_posts', 'number_of_posts');
문제:첫 페이지에서 페이지 번호를 잘못 받았습니다.서브페이지 4로의 링크가 표시되지만 서브페이지 4는 종료되지 않습니다.
이런 걸 넣어야 될 것 같아요
....
if ( ! $paged || $paged < 2 )
{
// show only 10 posts but calculate the pagination with 18 posts
}
.....
이게 가능합니까?
여기 얼마 전에 WPSE에서 한 게시물의 수정본이 있습니다.
WPSE에서
순서 1
우리는 그것을 얻어야 한다.posts_per_page
백엔드에서 설정된 옵션(10으로 설정해야 함)과offset
사용할 수 있습니다.그것은 일 것이다14
1페이지에 24개의 투고가 필요하고 나머지에는 24개의 투고가 필요하기 때문입니다.
변경하기 싫으면posts_per_page
옵션을 선택하면 단순히 변수를 설정할 수 있습니다.$ppg
로.10
$ppg = get_option( 'posts_per_page' );
//$ppg = 10;
$offset = 14;
순서 2
1페이지에서, 당신은 뺄 필요가 있습니다.offset
로.posts_per_page
$query->set( 'posts_per_page', $ppp - $offset );
순서 3
다음을 적용해야 합니다.offset
이후의 모든 페이지에 대해서, 그렇지 않으면 페이지의 마지막 투고가 다음 페이지에 반복됩니다.
$offset = ( ( $query->query_vars['paged']-1 ) * $ppp ) - $offset;
$query->set( 'posts_per_page', $ppp );
$query->set( 'offset', $offset );
순서 4
마지막으로 오프셋을 다음에 추가해야 합니다.found_posts
그렇지 않으면 페이지 수가 마지막 페이지를 표시하지 않습니다.
add_filter( 'found_posts', function ( $found_posts, $query )
{
$offset = 14;
if( $query->is_home() && $query->is_main_query() ) {
$found_posts = $found_posts + $offset;
}
return $found_posts;
}, 10, 2 );
모두 함께
이것이 완전한 쿼리가 함수에 들어가는 방법입니다.php
add_action('pre_get_posts', function ( $query )
{
if ( !is_admin() && $query->is_main_query() ) {
$ppp = get_option( 'posts_per_page' );
//$ppp = 10;
$offset = 14;
if ( !$query->is_paged() ) {
$query->set( 'posts_per_page', $ppp - $offset );
} else {
$offset = ( ( $query->query_vars['paged']-1 ) * $ppp ) - $offset;
$query->set( 'posts_per_page', $ppp );
$query->set( 'offset', $offset );
}
}
});
add_filter( 'found_posts', function ( $found_posts, $query )
{
$offset = 14;
if( $query->is_main_query() ) {
$found_posts = $found_posts + $offset;
}
return $found_posts;
}, 10, 2 );
<?php
function number_of_posts($query)
{
if($query->is_main_query())
{
$paged = $query->get( 'paged' );
//if page is less than 2 get 10 post on that page (that is on page 1)
if ( ! $paged || $paged < 2 )
{
$query->set('posts_per_page', 10);
}
else
{
$query->set('posts_per_page', 24);
}
}
return $query;
}
add_filter('pre_get_posts', 'number_of_posts');?>
Wp_Query의 인수를 모두 지정한 메인 쿼리에서 추가해 주세요.$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
언급URL : https://stackoverflow.com/questions/34624819/wordpress-display-more-posts-on-a-subpages
'itsource' 카테고리의 다른 글
에의 JSON의 시리얼화를 해제하고 있습니다.Newtonsoft를 사용하는 NET 객체(혹은 LINQ에서 JSON으로) (0) | 2023.02.14 |
---|---|
웹 서버에서 브라우저로 데이터를 푸시할 수 있는 방법이 있습니까? (0) | 2023.02.14 |
Eslint 오류 - 화살표 본문을 둘러싼 예기치 않은 블록 문입니다. 반환된 값을 = 바로 다음에 이동합니다.> (0) | 2023.02.14 |
Ionic: 어떻게 div의 중심을 잡습니까? (0) | 2023.02.14 |
JSX/TSX에서 TypeScript 캐스트를 사용하는 방법 (0) | 2023.02.14 |