inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cuộc chinh phục hoàn chỉnh của WordPress

single 포스트글에서도 페이지의 $theParent를 가져오는 법

Đã giải quyết

177

qkrtjdrbs125

5 câu hỏi đã được viết

0

강사님 안녕하세요?(제가 좀 질문이 많아서 죄송합니다..ㅠㅠ 그렇지만 꼭 만들어야 해서요...ㅠㅠ)

강의내용을 토대로 블로그페이지에 하위 메뉴 샘플페이지1,2,3을 만들어 보았습니다.(크게 다른것 없이 셋 다 /* Template Name: Sample Template */으로 동일한 커스텀 템플릿입니다.)
Sample Template의 내용으로는 ‘호스팅’이라는 카테고리(id=20)만 불러오도록 했습니다.
샘플페이지에 나타난 포스트카드를 클릭하면 해당 포스트글로 창이 넘어가는데요.
여기까지는 강의내용과 똑같습니다.

여기서 제가 한 가지 변화를 주고 싶은데요. single 포스트글의 전체적인 디자인이 샘플페이지1과 동일했으면 좋겠습니다.
그러니깐 샘플페이지1에서 좌측에 <aside>가 불러와져 있는데요.
single 포스트글에서도 좌측에 <aside>가 불러오고 싶은데, 불러와지지가 않습니다.
물론 당연히도 if($theParent) { } 구문에서
$theParent변수에 할당된 것이 없어서 그렇겠지요?

질문 1.
그러면 어떻게 해야 single 포스트글에서도 샘플페이지1 에서 갖고 있는 $theParent변수와 같은 변수를 가져올 수 있나요?

 

(질문이 많아서 나누었습니다..ㅠㅠ)

image 1.png.webpimage 2.png.webp

 제가 만든 content-samplepage.php

<?php include get_theme_file_path('inc/variables.php'); ?>

<main id="sampleContent">
  <div class="section-content">
    <div class="container">
      <div class="row">
        <aside class="col-md-3 mb-4">
          <?php 
            if($theParent) {
          ?>
          <ul class="list-group shadow">
            <p class="list-group-item list-group-item-action active mb-0" aria-current="true">
              <?php echo get_the_title($theParent); ?>
            </p>

            <?php 
              if($theParent) {
                $childrenList = $theParent;
              } else {
                $childrenList = get_the_ID();
              }

              wp_list_pages(array(
                'title_li'  => NULL,
                'link_before' => '<li class="list-group-item list-group-item-action">',
                'link_after'  => '</li>',
                'sort_column' => 'menu_order',
                'child_of'  => $childrenList
              ));
            ?>
          </ul>
          <?php } ?>
        </aside>



        
        <article class="col-md-9 mb-4 fw-light">
          <?php the_content(); ?>
          <?php 
        $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        $eventQuery = new WP_Query(array(
          'post_type' => 'post',
          // 'posts_per_page'  => 10,
          'cat' => 20,
          'paged' => $paged
          // 'category_name' => 'event'
          // 'order' => 'DESC',
          // 'orderby' => 'date'
        ));

        if($eventQuery->have_posts()) {
      ?>
      <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 gx-3 gy-2 grid">
        <?php 
          while($eventQuery->have_posts()) {
            $eventQuery->the_post();
            include get_theme_file_path('inc/variables.php'); ?>

        <div class="col grid-item">
          <div class="card mb-3">
            <div class="row g-0">
              <div class="col-4 post-featured"
                style="background-image: url('<?php echo esc_url(has_post_thumbnail() ? $postFeatureImg[0] : get_theme_file_uri('assets/images/bg1.jpg')); ?>')">
              </div>
              <div class="col-8 post-text d-flex flex-column align-items-stretch">
                <div class="card-body">
                  <h5 class="card-title mb-3">
                    <a href="<?php the_permalink(); ?>" class="text-decoration-none mb-3"><?php the_title(); ?></a>
                  </h5>
                  <p class="card-text fw-light text-truncate">
                    <?php if(has_excerpt()) {
                      echo get_the_excerpt();
                    } else {
                      echo wp_trim_words(get_the_content(), 10);
                    } ?>
                  </p>
                </div>
                <div class="card-footer border-0">
                  <small class="fw-light post-meta">
                    <?php post_meta(18); ?>
                  </small>
                </div>
              </div>
            </div>
          </div>
        </div>

        <?php }
        ?>
      </div>
      <br />
      <div class="row justify-content-center my-5">
        <div class="col-md-8">
          <?php fellowtuts_wpbs_pagination($eventQuery->max_num_pages); ?>
        </div>
      </div>
      <?php } else {
        echo '<div class="row justify-content-center">';
        echo '<p class="text-center">'. esc_html__('Sorry, no events.', 'myfourthwp') .'</div>';
        echo '</div>';
      } wp_reset_postdata(); ?>




        </article>
      </div>

      


    </div>
  </div>
</main>

 제가 만든 page-sample.php

<?php /* Template Name: Sample Template */
  get_header();
  
  while(have_posts()) {
    the_post();

    get_template_part('template-parts/content/content', 'topBanner');
    get_template_part('template-parts/content/content', 'samplepage');

  }
  
  get_footer(); 
?>

wordpress

Câu trả lời 1

0

Self-coding

안녕하세요.

single.php에서 샘플페이지의 페이지 리스트를 가져오려면

변수 $theParent의 아이디를 조정하셔야 할 것 같은데요.

// variables.php
$theParent = wp_get_post_parent_id(get_the_ID()); 

이 변수가 담긴 파일을 single.php에 include 하셨으니, get_the_ID는 페이지(샘플페이지1, 2,3)의 아이디가 아니라 포스트의 아이디가 오게 됩니다.

 

그래서 single.php에서는 조금 수정을 해주셔야 할 것 같아요.

theParent를 블로그로 잡으면 될 것 같아요.

<?php // single.php ?>
<aside class="col-md-3 mb-4">
          <?php 
$theBlog = get_page_by_path('blog');

          ?>
          <ul class="list-group shadow">
            <p class="list-group-item list-group-item-action active mb-0" aria-current="true">
              <?php echo get_the_title($theBlog->ID); ?>
            </p>

            <?php 
              

              wp_list_pages(array(
                'title_li'  => NULL,
                'link_before' => '<li class="list-group-item list-group-item-action">',
                'link_after'  => '</li>',
                'sort_column' => 'menu_order',
                'child_of'  => $theBlog->ID,
              ));
            ?>
          </ul>
          <?php } ?>
        </aside>

 

테스트는 못 해봤는데, 한번 해 보시고 이슈가 또 생기면 말씀해주세요~

 

1

qkrtjdrbs125

감사합니다~~!!
덕분에 잘 나옵니다!!ㅎㅎㅎ

뉴스페이퍼 싱글템플릿 디자인 관련 상담 요청

0

24

2

폰트 업로드 단계에 설치해야할 플러그인이 현재 없습니다

0

45

2

FASTCOMET SSL 설정 방법 문의

0

50

2

엘리멘터

0

48

2

워드프레스로 웹사이트를 만드는 경우애도 HTML, CSS 코드를 직접 작성해야 하나요? 프로젝트 1번을 거의 다 들었는데 대부분 작업이 CSS코딩과 HTML코딩 같아서요

0

143

2

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

0

179

2

71강 gallery-title 누락

0

162

2

vscode

0

132

1

22강 요약문

0

166

2

bootstrap_5_wp_nav_menu_walker()드랍다운 방식을 메가메뉴로 설정할 수 있나요?

0

178

1

single 포스트글에서 페이지의 Top-Banner이미지 불러오는 법

0

199

2

강의 프로젝트 연습용 세컨드 프로젝트 만드는 법

0

228

1

16강 브라우저에서 출력되는 var_dump() 데이터 자동정렬 툴

0

299

2

start site

0

263

1

wordpress에서 js파일 모듈작업

0

306

2

$post가 정의되어있지 않다는 메시지가 나오네요.

0

363

2

25강 - Post meta 부분 질문입니다.

0

304

1

관리자페이지 로그인이 안됩니다!

0

459

2

프로젝트1에서 게시글타이틀부분이 ㅜㅜ 갑자기 왜이렇게되는지 모르겠습니다

0

599

4

길이가 서로 틀려요

0

313

1

백그라운드 이미지ㅠㅠ

0

410

1

pagination 다음페이지에서 오류가 나는 경우

0

720

1

프로젝트 내에 있는 php파일을 a태그로 연결시킬 수 있을까요?

0

386

1

프로젝트4-마이그레이션 플러그인이 없어요..

0

301

1