워드프레스에서 제공하는 내부 변수를 해제해서 특정 문구를 삭제하는 방법에 대한 개념 설명

Posted on

워드프레스 코어의 작동에 부가되는 처리를 하려면 훅 기능을 씁니다. 훅 기능은 액션과 필터로 나누어지는데요. 액션이나 필터나 워드프레스 내부 작동 과정에 갈고리처럼 걸쳐져서 특정한 처리를 하는 기능입니다. 액션은 리턴값이 없이 훅이 되고 필터는 리턴값이 있게 훅이 됩니다.

필터를 써야 할때는 주요 변수의 가공된 값을 리턴해서 처리해야 할때입니다. 기술적으로 여러 경우의 수가 있겠지만, 가공한 값을 리턴해서 다른 기능이 명시적으로 받아야 처리가 이어질때 필터를 쓰네요.

워드님이 제시하신 기능도 필터로 구현되는데요. 아래와 같은 코드입니다.

// 워드프레스 댓글 쿠키 제거하기
// Remove WordPress comment cookies
add_filter('comment_form_default_fields','tu_comment_form_hide_cookies_consent' );

function tu_comment_form_hide_cookies_consent( $fields ) {
    unset( $fields['cookies'] );
    return $fields;
}

이 코드의 핵심은 EU 개인정보보호법 준수를 위해 댓글 남기는 폼을 표시할때 fields라는 배열 변수에 지정된 문구를 지우기 위해서 고안된 코드입니다.

$fields 변수는 워드프레스 처리에 쓰이는 내부적인 변수로, $fields[‘cookies’]를 제거해서 훅 기능을 구현하면 이 cookies 에 해당되는 값만 삭제 unset() 이 되게 합니다. 그러면 댓글 폼에 $fields[‘cookies’]로 표시되어야 할 문구가 빈칸이 되어 결국에는 문구를 삭제할 수 있죠.

이 경우 이 코드를 보고 쇼트코드 기능을 이해할 수 있게 됩니다.

우선 인자로 받은 $fields 변수를 가공해서 리턴값으로 넘겨주는 코드이니 필터에 해당하구요. function tu_comment_form_hide_cookies_consent( $fields ) 에 해당하는 시그니처로 함수를 만들고, 이를 add_filter()로 등록합니다. 이 코드를 테마의 functions.php에 두면 댓글 폼 표시시 훅이 작동해서 폼 표시에 관여하는 문구를 지우게 됩니다.

즉 댓글 폼 표시라는 워드프레스 내부 작동에 갈고리처럼 걸쳐져서 특정한 처리를 하는 것이죠.

이를 고안하려면 우선 필터 구현 방법과 등록 방법을 숙지한 상태에서, 공신력 있는 정보를 토대로 내부적으로 처리되는 변수를 미리 파악할 필요가 있습니다. 잘 파악을 안해둔 상태에서도 워드님의 코드를 보고 $fields 변수에 대해 https://wordpress.org 에서 찾아볼 수 있으면 됩니다.

때로는 필터 기능으로 안되면 워드프레스 차원이 아니라 테마 차원에서 제작자가 수동으로 문구를 추가한 경우를 예상해볼 수 있어서 해당 문구를 감싼 HTML 태그를 알아내서 CSS로 바꾸는 것도 추가로 해설해주신 것입니다.

해설이 이해하기 쉽게 된지 모르지만 오늘 배운 것을 생각하다가 워드님 답변을 읽으니 재인이 되어 과정을 설명해보았습니다. 아주 잘 한 설명은 아니지만 복습의 읟미로 올립니다. 더 공부해놔야겠습니다.

참고로 쇼트코드 함수 내부에 print_r($fields); 와 같은 라인을 두고 잘 쓰면 $fields의 각 첨자와 대입된 값이 뭔지 알 수 있습니다.

답글 남기기

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