itsource

워드프레스, 하위 페이지에 더 많은 게시물 표시

mycopycode 2023. 2. 14. 20:18
반응형

워드프레스, 하위 페이지에 더 많은 게시물 표시

내 서브페이지에 더 많은 게시물을 표시하고 싶다.

함수에 내 코드가 있어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사용할 수 있습니다.그것은 일 것이다141페이지에 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

반응형