counter create hit

워드프레스 댓글이 다른 포스트에서 표출될때 해결법

얼마 전 워드프레스에 맞는 스킨(테마)를 제작하여 적용하였다. 현재 적용되어 있는 이 스킨인데, 사실 이 스킨은 2013년에 홈페이지 프로필 제작용으로 만든 html + css 스킨이고, 블로그에도 적용할 것을 고려하고 만들었다가, 여러가지 사정으로 홈페이지에만 (현재 프로필페이지로 넘겨짐) 적용하고 블로그 적용은 계속 미뤄오다 이제야 잘 적용할 수 있게 되었다.

네이버 등의 서비스형 블로그와 설치형 텍스트큐브를 기반으로 한 티스토리 블로그에 비해, 워드프레스 블로그는 테마 구조가 상당히 복잡하다. 알짜배기 기능만을 구현한다고 하더라도 약 7개 정도의 php 파일로 구성되어 있고 (header, footer, single 등), 코어에서 정의된 함수명들을 알아야 하기에 처음 개발시에는 관련 문서를 많이 찾아보면서 작성하게 된다.

최근에 워드프레스 댓글이 다른 포스트에서 표출되는 문제를 발견하였는데, 문제가 발생한 원인이 블로그 포스트 뒤에 붙는, "블로그 내 관련 포스트" 목록에 있다는 것을 알게 되었다. 아래 코드는 관련 포스트 목록을 뽑아주는 코드이다.

$category = get_the_category();
$my_query = new WP_Query("category_name".$category[0]->name."&showposts=5&orderby=post_date&order=desc");

while ($my_query->have_posts()) : $my_query->the_post();
echo '<li><a href="'.$post->guid.'">"'.$post->post_title.'"</a></li>';
endwhile;

위 코드가 실행되는 도중에 $post 전역변수를 건드려서 이후에 comments_template() 함수를 호출할 시에 영향을 준다고 한다. 목록을 뽑은 후에, 영향받은 변수를 다시 리셋하는 wp_reset_query() 함수를 호출 후 comments_template() 함수를 호출하면 문제를 해결할 수 있다.

References

[1] stackoverflow.com, "Previous post is shown after submitting a comment," StackOverflow, 06-Dec-2011. [Online]. Available: http://stackoverflow.com/questions/8406150/previous-post-is-shown-after-submitting-a-comment

Leave a Reply

Your email address will not be published. Required fields are marked *

*