wp_reset_postdata();
344
投稿した質問数 1
new WP_Query를 통해서 새로운 $wp_query객체를 얻을 때, 글로벌 $post에도 변화가 있기 때문에 loop가 끝나고 나면 wp_reset_postdata()를 실행해주는 것으로 이해했는데, 맞다면 글로벌 $post에 어떤 변화가 일어나는 것인가요?
回答 1
1
안녕하세요. INFLEARINGMACHINE님.
주중에 제가 일이 많아서 답을 이제야 드리게 됐습니다.
사실 질문해 주신 부분에 대해서는 Loop 강의 다음다음 강의인 "Loop 내 주요 함수 뜯어 보기"에서 상세하게 다루고 있습니다. 그래서 아마도 의문이 해결되셨을 지도 모르겠습니다.
그래도 해결되지 않은 의문이 있다면 추가로 질문을 남겨 주시면 감사하겠습니다.
다만 한 가지 도움을 드릴 만한 것은 있는 것 같습니다.
"new WP_Query를 통해서 새로운 $wp_query객체를 얻을 때"라고 말씀해 주셨는데요, 워드프레스에서 변수 이름이 매우 중요하다는 점을 한 번 더 설명드릴 수 있을 것 같아요.
new WP_Query로 WP_Query 클래스의 새로운 인스턴스를 얻을 때 변수명을 $wp_query로 하는 것을 권장하지 않습니다. 원 페이지의 동작을 변경하게 되기 때문입니다.
예컨대 example.com/?p=1234 주소로 접속을 했다고 가정해 볼 게요. 그러면 1234번 포스트를 가져오게 됩니다. 이 동작은 $wp_query 라는 글로벌 인스턴스에 기록이 돼 있습니다.
그런데 이런 상황에서 $wp_query를 다른 조건으로 덮어쓰게 되면, 문제가 발생할 수 있습니다. 예컨대, 이전 포스트나 다음 포스트를 1234번 포스트 제목이 나오기 전에 표시를 하기 위해서 $wp_query = new WP_Query를 실행했다고 가정해 볼 게요. 그러면 문제가 발생하게 됩니다. 글로벌 변수인 $wp_query를 덮어썼기 때문입니다.
그래서 중요한 것은 새로운 $wp_query 객체를 얻으면 안 된다는 것이고, WP_Query의 새 인스턴스를 만들 때는 $wp_query라는 이름을 피하고 다른 이름을 지으시라는 것입니다. $my_query 같은 이름을 사용하라는 것이죠.
wp_reset_postdata()는 이런 커스텀 이름의 WP_Query 클래스 객체를 사용한 뒤 실행해 주는 것입니다. 예컨대 $my_query에서 불러온 포스트를 글로벌 $post 변수에 할당하고 작업을 했다고 가정을 해 보죠. 그렇다면 작업이 끝난 뒤에는 다시 $wp_query의 맥락으로 돌아와야 할 거예요. 이 때 wp_reset_postdata()를 실행해서 $wp_query의 포스트를 글로벌 $post 변수로 되돌려 주는 작업을 하는 것입니다.
이게, 화면으로 보여 드리면 편한 것을 줄글로 쓰니까 어려운 점이 있네요. 혹시 의문이 다 해소되지 않았다면 어떤 부분이 추가로 궁금하신지 자세히 써 주시면 감사하겠습니다. 그러면 최대한 이해가 가도록 설명을 다시 한 번 드려 보겠습니다.
감사합니다.
뉴스페이퍼 싱글템플릿 디자인 관련 상담 요청
0
27
2
53강 레이아웃에서 css git 링크 관련 질문입니다.
0
35
2
폰트 업로드 단계에 설치해야할 플러그인이 현재 없습니다
0
49
2
FASTCOMET SSL 설정 방법 문의
0
54
2
banbu.kr 사이트 접속이 안됩니다.
0
56
2
엘리멘터
0
48
2
선생님 총체적 난국입니다..
0
73
2
wsl에서 폴더 열기 리눅스 드라이브가 보이지 않습니다.
0
66
1
도메인연결문의
0
56
2
도쿄서버 선택불가의 경우 대체 안을 알려주세요
0
56
2
강의가 오래됐는데 현시점에 원활한 진행이 가능할까요?
0
41
2
XML 불러오기 불가 (이미지만)
0
158
1
플러그인 개발에 대해서 궁금합니다
0
315
2
워드프레스 댓글 수정 삭제
0
377
2
single-book.php 파일은 워드프레스 기본 제공 파일인가요?
1
300
2
wp_enqueue_style 이동
0
292
2
강의변경
0
391
1
WP 전반적인 질문입니다.
0
447
1
xml 가져오기 불가
0
422
1
xdebug 3.2와 PHPStorm debug 연동
0
774
1
phpStorm에서 Cmd B 정의로 바로 점프하는게 안되요
0
242
1
어드민 강의 관련
0
385
1
query loop 관련 커스터마이징 질문
0
263
1
안녕하세요 첫 질문입니다
0
277
4

