안녕하세요. 린치핀소프트 한광희입니다.

www.linchpinsoft.com/?member=house 

위의 URL에서 굵은 이탤릭체로 표시된 ” member=house ” 라는 부분을 query string 이라고 말합니다. 보통 query string을 사용하는 경우는 URL 안에 특정 데이터 정보를 포함시켜 서버측에 전달해주기위해 사용되곤 합니다.  워드프레스에서도 이 query string이 넓은 범위에서 사용되고 있습니다. 예를 들어 포스트나 카테고리를 구분하기 위한 /?p = 23 , /?cat=23 같은 식으로 기본적으로 워드프레스에서 콘텐츠와 페이지를 식별하기 위해 사용되기도 하며 많은 플러그인등에서도 인증이나 콘텐츠 식별을 위해 query_string을 사용하고 있습니다.

 

screenshot-newtab 2016-01-28 09-49-16

<query string의 예시>

 

screenshot-newtab 2016-01-28 09-55-26

위의 스크린샷 화면처럼 로그아웃 화면에서 워드프레스는 보통 다음과 같이 query string을 이용합니다.

 http://www.linchpinsoft.com/wp-login.php?loggedout=true

위 URL처럼 굵은 이탤릭체로 표시된 loggedout=true 라고 되어 있는 부분이 query string 으로서 이 부분이 URL에 지정되면 워드프레스 사이트는 로그아웃된 화면을 보여주도록 설계되어 있습니다.

워드프레스 시스템에서는 이 query string을 정상적으로 이용하여 시스템에서 사용하기 위해서는 시스템에 해당 query를 등록하여 이용 할수 있도록 설계하여야 합니다.

워드프레스가 정상적으로 콘텐츠를 보여주기위해 메인 쿼리 객체를 생성하고 생성된 객체가 운용되기 전에 동작되는 pre_get_posts 등의 주요 액션 훅(Action Hook)에도 운용되려면 먼저 query_vars 의 필터 훅에 등록된 query_string 이어야만 합니다.

즉, 간단히 말해서 워드프레스 전 시스템에서 자신이 지정한 query_string을 자유롭게 사용하기 위해서는 query_vars 필터를 이용하여 먼저 등록하여야 합니다.

등록은 아주 간단합니다.

add_filter('query_vars', 'add_GET_query'); // query_vars 필터 훅 추가
function add_GET_query($vars){

    $vars[] = 'linchpin_member'; // query_string으로 "linchpin_member" 라는 query string을 $vars 에 추가
    return $vars; // $vars 리턴
}

위와 같은 코드를 통해 간단히 query_string을 추가할수 있습니다. 이후에는 query string을 검증하거나 확인하는 훅이나 워드프레스 함수에서 원활하게 자신이 설정한 query string을 이용할 수 있습니다.