워드프레스 add_filter(‘the_content’, ‘youtube_wrapper’); 가 여러번 호출되는 문제 수정하기


유튜브 프레임 자동 크기 조절하는 부분 삽질하고 있다가 이상한점을 발견했음.

add_filter('the_content', 'youtube_wrapper');
function youtube_wrapper($content) {
	...
	return $content;
}

이 함수가 두번씩 호출되는것이였다. 꽤 오랜시간 삽질을 했는데 왜 그런지는 잘 모르겠고 검색을 해보니 테마에 따라서 혹은 플러그인에 따라서 여러번 호출될수도 있다 라는 댓글들을 봤음.

나는 왜 두번 호출되는가 이래저래 삽질하다가 워드프레스 레퍼런스 페이지에 이유가 나와있는걸 봤음.

나의 경우에는 오픈그래프 작성하는 함수에서 get_the_excerpt()을 호출하면서 발생했는데 아마도 본문 요약내용을 가져오면서 다시 한번 루프가 돌은거 같음.

add_filter('the_content', 'youtube_wrapper');
function youtube_wrapper($content){
	//중복호출 방지용
	if(!is_singular()){return $content;}
	if(!in_the_loop()){return $content;}
	if(!is_main_query()){return $content;}
    //여기서부터 작업    
    ...
    ...
    ...
    return $content;    
}

아무튼 오늘의 교훈은 레퍼런스를 꼭 확인하자 임.

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다