젯팩(Jetpack) 구독(Subscribe) 특정 글만 발송, 카테고리 선택

젯팩(Jetpack)은 워드프레스를 만든 Automattic사에서 제공하는 플러그인이다. 누누이 문제점으로 지적되어왔고, 아직까지 고쳐지지 않은 ‘속도 저하’ 문제가 있음에도 불구하고 수백만 명이 사용 중인, 워드프레스에서 가장 잘 나가는 플러그인 중에 하나다.

속도 저하가 있어도 젯팩(Jetpack)을 쓰는 이유

젯팩이 완벽한 것도 아니고, 웹 사이트에서 핵심적인 속도 저하 문제를 가지고도 이렇게 사랑받는 이유는 여러 가지가 있다. 첫째로는 젯팩의 기능들을 각자 다른 플러그인에서 구현하려면 어차피 비슷한 속도 저하가 있을 거라고 느껴질 정도로 굉장히 기능이 많고. 워드프레스 설치 후 필수적인 기능들부터, 이미지 CDN 기술이나 이 글에서 말하고 있는 구독(Subscribe) 기능 같은, 사실상 본인이 직접 구축하기는 불가능에 가까워 대형 업체를 통해야 하는 기능들을, 워드프레스 제작사가 탄탄한 신뢰도와 함께 제공해주고 있으니 매력적일 수밖에 없다. 때문에 속도가 저하되는 건 맞으나, 안정성과 신뢰도 면에서 굉장히 훌륭하기 때문에 감수할 수 있다고 느껴지기도 한다.

그 중 개꿀몬(GKKmon)이 젯팩 플러그인을 사용하는 이유는 사실 딱 2가지 기능 때문이다. 하나는 젯팩의 댓글 시스템이고, 다른 하나는 구독 기능이다.

이 젯팩 구독(Jetpack Subscribe)기능은 내 블로그를 팔로우 한 사람들에게 이메일로 새 글 알림을 보내주는 기능이다. 메일침프(MailChimp)같은 프로그램보다 다양성이나 세부 기능이 떨어지는 건 당연하지만, 구독자 수나 메일 수의 제한이 없이 완전 무료라는 점이 굉장히 매력적인 기능이다.

젯팩 구독(Subscribe)기능의 치명적인 문제점

개꿀몬(GKKmon)은 하이 퀄리티의 기술보다 영구적으로 사용할 수 있는 기능들을 굉장히 좋아하는데, 그런 면에서 젯팩의 구독 기능은 굉장히 매력적이었다. 그래서 어느 정도 불편함을 감수하고서라도, 새 글 알림밖에 불가능하지만 그래도 괜찮다고 생각해서 잘 사용하고 있었는데, 이번에 다국어 사이트 플러그인 폴리랭(Polylang)을 사용하면서 큰 문제점이 발생했다. 그건 바로 늘어난 언어 수 많큼 젯팩 구독 메일이 발송되어버린다는 것!

무슨 소리냐면, 현재 개꿀몬(GKKmon)에선 한국어, 영어, 일본어, 러시아어, 중국어(간체) 로 글들이 자동번역 되어 올라가는데, 글을 발행할 때마다 한국인 사용자에게도 각 언어별로 5개의 이메일이 발송되고, 일본어 사용자에게도 마찬가지로 5개씩 발송되고 있다는 이야기다. 내가 구독자 입장이라면 스팸메일로 오인할 수도 있는 굉장히 치명적인 문제다!

가장 좋은 해결법은 젯팩이나 폴리랭 기능 중에 구독한 사람의 언어로 한 통씩 보내주는 게 베스트지만, 앞서 말했다시피 새 글 보내기밖에 없는 심플한 제트팩 구독에 이런 기능이 있을 리는 없고, 마찬가지로 Polylang에도 그런 기능은 없었다. 그래서 전문적인 메일 시스템을 써야 하나 고민하던 순간, 젯팩 구독(Subscribe) 공식 설명 페이지에서 ‘게시물마다 토글 버튼을 사용해 이메일 전송 여부를 선택’ 할 수 있는 후크(Hook) 기능을 발견했다!

젯팩 구독 특정 게시물만 발송하는 방법

사용법은 정말정말 간단하다. 테마의 functions.php 파일 제일 아래에

add_filter( 'jetpack_allow_per_post_subscriptions', '__return_true' );

라고 추가하면 된다. 그럼 워드프레스 글 작성 에디터의 ‘공개’ 탭에

젯팩 구독: □ 구독자에게 보내지 않음

라는 토글 버튼이 생성된다.

그 외에도 공식 설명 페이지에도 나와 있듯이, 특정 카테고리의 글은 메일로 보내지 않는 설정도 가능하고.

add_filter( 'jetpack_subscriptions_exclude_these_categories', 'exclude_these' );
function exclude_these( $categories ) {
    $categories = array( 'category-slug', 'category-slug-2');
    return $categories;
}

위의 코드대로 라면, category-slug, category-slug-2 카테고리의 글을 보내지 않게 된다.

반대로 특정 카테고리 중 하나에 게시물을 올리지 않으면 메일을 보내지 않는 기능도 있다.

add_filter( 'jetpack_subscriptions_exclude_all_categories_except', 'exclude_all_except' );
function exclude_all_except( $categories ) {
    $categories = array( 'category-slug', 'category-slug-2');
    return $categories;
}

이 기능들을 사용할 때 주의할 점은, 공식 페이지에도 나와 있듯이, 세 가지 중 한 가지만 사용해야 한다는 점이다. 애초에 서로 함께 사용하기 위한 필터가 아니고, 두 개 이상을 동시에 사용하면 다른 하나는 작동하지 않거나 하는 등 오류가 발생하게 되니까 명심하도록 하자.