채널톡 아이콘

인프런 커뮤니티 질문&답변

박영준님의 프로필 이미지

작성한 질문수 3

워드프레스(WordPress) 완전정복

133 - 라이브 서치 -4. Find & Match functions

블로그 페이지 게시물 페이지 오류

작성

·

58

0

선생님 강의 잘 듣고 있습니다. 수업 중 난관에 부딪혀서 질문 남깁니다.

문제 1

현재 content.php 에서 커스텀 쿼리를 생성 후

posts_per_page => 6 의 값을 넣고 난 후
/blog/page/6/ 에서부터 404 오류 페이지로 이동 됩니다.
(1, 2, 3, 4, 5 페이지까지는 페이지가 나오는데 6, 7 을 404 페이지를 보여줍니다.)

구글링 해본 결과 :
1. 워드프레스 탭에서 설정 고유주소 변경 : 실패
2. 설정 -> 읽기 페이지당 보여줄 글의 수 를 posts_per_page과 동일하게 6으로 맞춤 -> 모든 페이지(blog/page) 완벽하게 작동됨, 하지만 프론트 페이지에 front-latest posts도 6으로 나옴: 실패

image.png

 


<?php
      // $paged = get_query_var('paged') ? get_query_var('paged') : 1;

      $commonQuery = new WP_Query(array(
        'post_type' => 'post',
        'posts_per_page' => 3,
        'category__not_in' => array(32),
        'paged' => get_query_var('paged', 1)
      ));

 

문제 2 :
블로그 페이지 topBanner는 타이틀 및 서브 타이틀이 text-align이 수정되지 않음(다른 페이지는 작동)

그리고 블로그 페이지의 title이 블로그 게시물의 text-align에 따라 같이 움직임 (최근 블로그 게시물의 텍스트 얼라인을 왼쪽으로 작성하면 블로그 페이지의 타이틀도 왼쪽으로 이동됨)


답변 2

0

Self-coding님의 프로필 이미지
Self-coding
지식공유자

  1. category__not_in 때문에 그렇습니다.

     

$GLOBALS['wp_query']->max_num_pages = $commonQuery->max_num_pages;

넣어보세요

 

  1. 스타일링에서 수정해 보시죠.

 

박영준님의 프로필 이미지
박영준
질문자

category__not_in 주석처리해도 동일합니다.
위 코드를 추가해도 그대로 404 페이지로 이동합니다.


2. css가 문제가 아닌거 같아요, topBanner.php에 acf로 받아온 $text_align

<div class="text-center <?php echo ($text_align ? 'text-md-' . $text_align : ''); ?>">


블로그 페이지 탑배너 탭의 Text Align 수정이 적용되지 않습니다. (다른 페이지는 수정됨)

image.png

 

Self-coding님의 프로필 이미지
Self-coding
지식공유자

WP_Query의 array에서

category__not_in 코드를 주석처리하지 마시고,

그 밑에

'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1

로 고쳐주세요.

 

그리고 아래 pagination 코드 바로 위에 아래 코드를 추가해 주세요.

$GLOBALS['wp_query']->max_num_pages = $commonQuery->max_num_pages;

 

pagination 페이지가 더 있는데, 6, 7페이지에서 404를 내는 것은 제외된 조건 때문에 그렇습니다.

테스트로 echo $commonQuery->max_num_pages; 라고 입력해서 숫자가 어떻게 보이는지 확인해 보세요.

박영준님의 프로필 이미지
박영준
질문자

function modify_main_query($query)
{
  if (!is_admin() && $query->is_main_query() && (is_home() || is_archive() || is_category())) {
    if (!$query->get('posts_per_page')) {
      $query->set('posts_per_page', 6);
    }
  }
}
add_action('pre_get_posts', 'modify_main_query');

디버그 해본 결과 pre_get_posts 훅을 추가한 뒤 해결했습니다. 명절인데도 답변해주셔서 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 박영준님께서 워드프레스 블로그 페이지에서 페이지네이션과 레이아웃 조정 문제로 질문을 주셨군요. 각각의 문제에 대해 답변드리겠습니다.

문제 1: 페이지네이션 404 오류

페이지 당 표시할 포스트 수와 관련하여 페이지네이션에서 404 오류가 발생하는 문제는 종종 설정과 관련이 있습니다. 다음을 확인해보시기 바랍니다:

  1. functions.php에서의 query 수정: pre_get_posts 필터를 사용하여 쿼리를 전역적으로 수정할 수 있습니다. 다음 코드를 추가해보세요.

    function adjust_main_query( $query ) {
        if ( ! is_admin() && $query->is_main_query() ) {
            // 여기에 쿼리 조건을 지정합니다.
            if ( is_home() ) {
                $query->set( 'posts_per_page', 6 );
            }
        }
    }
    add_action( 'pre_get_posts', 'adjust_main_query' );
    
  2. permalink 설정 재저장: 워드프레스의 설정 > 고유주소에서 현재 설정을 다시 저장하면, 페이지네이션 관련 규칙이 다시 작성될 수 있습니다.

  3. Custom Query 결과 확인: 커스텀 쿼리로 인해 기본 쿼리가 방해받는 경우, wp_reset_postdata()를 쿼리 이후에 호출하여 원래의 쿼리 상태를 복구하세요.

문제 2: Top-Banner Text Alignment 문제

블로그 페이지의 타이틀과 포스트 타이틀이 올바르게 정렬되지 않는 문제는 템플릿 혹은 스타일시트에서의 지정된 값과 충돌하는 만큼, 스타일의 구체정의(CSS specificity)를 확인하고 교정해보세요:

  1. 스타일시트 수정: 블로그 페이지와 다른 페이지들의 타이틀에 특화된 스타일을 확인하여 css 속성을 그대로 활용하거나 수정해보세요.

    • 특화된 클래스를 추가하여 스타일을 중복되지 않게 잡아 주세요.
    .blog-page-title {
        text-align: center; /* 적절한 위치로 맞추세요 */
    }
    
    
    .post-title {
        text-align: left; /* 포스트에 최소한의 특정 스타일 */
    }
    
  2. 템플릿 파일 검토: topBanner 와 블로그 페이지 템플릿 파일에서 text-align 클래스를 찾고, 모든 페이지에 동일로 만들어 스타일을 통일하세요.

추가적인 도움이 필요한 경우

지금 제안드린 방법으로 해결이 안 되는 부분이 있다면, 현 문제 내용을 더 세부적으로 알려주시면 추가적으로 도와드릴 수 있습니다.

참고 URL:
- Pagination Issues
- Fix WordPress Theme CSS Conflicts

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.