예를 들어, 워드프레스에서 특정 글 제목을 클릭했을 때 글 내용으로 이동하는 것이 아니라 특정 URL(예: www.google.com)로 이동시키고 싶은 경우가 있을 수 있습니다. 이 경우 여러 가지 방법을 생각해볼 수 있습니다. 가장 간단한 방법은 워드프레스에서 제공하는 후크를 사용하는 것입니다. 이와 관련된 후크로서 post_link 필터가 있습니다.
WordPress Codex 페이지를 방문하여 이 필터에 대한 내용을 확인할 수 있습니다. 이 페이지에 제공되는 샘플을 통해 이 필터를 어떻게 사용하는지를 파악할 수 있습니다.
function append_query_string( $url, $post, $leavename ) { if ( $post->post_type == 'post' ) { $url = add_query_arg( 'foo', 'bar', $url ); } return $url; } add_filter( 'post_link', 'append_query_string', 10, 3 );
위와 같은 형식으로 사용이 가능합니다. 특정 글의 타이틀 URL을 변경하려면 post id를 체크하여 특정 post id일 경우 $url을 변경시켜주면 원하는 결과를 얻을 수 있습니다. 글 ID를 확인하는 방법은 요소 검사를 해보면 쉽게 파악이 가능합니다. 예를 들어, 크롬에서 요소 검사를 했을 때 다음과 같이 글 제목 부분에 Post id가 나와 있습니다.
또는 글 ID를 확인할 수 있는 플러그인이 있습니다(참고). 위의 경우 post id는 10762가 됩니다. 그러면 다음과 같은 함수를 테마의 함수 파일에 추가합니다. (테마의 함수 파일에 사용자 코드를 추가하는 방법은 이 글을 참고해보시기 바랍니다.)
// 특정 글 타이틀 url 리디렉션 // Change Post url for a specific post in WordPress function change_url_for_specific_post( $url, $post, $leavename ) { $post_id = $post->ID; if ( $post_id == '10762' ) { $url = 'http://www.google.com'; // URL 변경 } return $url; } add_filter( 'post_link', 'change_url_for_specific_post', 10, 3 );
post id는 적절히 수정합니다. 그러면 해당 글 제목을 클릭하면 지정된 url로 이동하게 됩니다.
위의 그림처럼 제목에 마우스를 올리면 브라우저 하단에 링크된 주소가 "www.google.com"으로 바뀌어져 있음을 확인할 수 있습니다. 이 경우 (테마에 따라) 새로운 창이나 탭이 아닌 직접 이동하게 됩니다. 만약 target=_blank 속성을 추가하고 싶은 경우 jQuery를 사용하여 특정 링크의 속성을 변경해주도록 합니다(참고).
또 다른 방법으로 해당 글 URL 자체를 리디렉션시키는 방법도 가능합니다. 자세한 내용은 이 글을 참고해보시기 바랍니다.
댓글 남기기