[WordPress] 워드프레스에서 숏코드 실행 방지 하는 방법 총정리

  1. 워드프레스 포스트 본문에서 숏코드 실행을 방지하기 위해서는,
  2. 이중 대괄호를 사용하여 숏코드 실행을 방지 할 수 있고,
  3. strip_shortcodes 함수를 이용하거나
  4. do_shortcode 필터를 해제 하는 방법이 있습니다.

워드프레스에서 작성한 본문에서 숏코드의 실행 방법을 설명 하느라 숏코드를 본문에 넣었는데, 이 숏코드가 실행 되어버려 실제 내가 표현 하려 했던 것과 차이가 날 때가 있습니다. 그냥 숏코드 예시만 보여주면 되는데 실제 실행 되어 버리는 경우죠.

워드프레스 포스트 본문에서 숏코드가 실행 되지 않도록 하는 방법을 알아봅시다.

이중 대괄호 사용하기

숏코드를 실행할 때 사용하는 대괄호([])를 이중으로 써주는 방법이 있습니다. 예를 들어서 triki_shortcode 라는 숏코드를 실행시키기 위해서는 [triki_shortcode] 라고 사용하는데, 이를 #triki_shortcode 라고 적어 주는 것입니다.

이렇게 할 경우 숏코드는 실행되지 않으면서 이중으로 작성된 대괄호는 1개로 표현되면서 숏코드 실행을 위한 코드만 보이게 됩니다.

이중 대괄호 사용의 단점

이중 대괄호 사용을 통한 숏코드 실행 방지는 한가지 단점이 있습니다. 실제로 해당 워드프레스 블로그에서 사용하지 않는 숏코드는 이중 대괄호가 그대로 표현 된다는 점입니다.

예를 들어 실제로 사용되는 숏코드인 [triki_short_real] 과 실제로 블로그에서 사용되지 않고 있는 [triki_short_fake] 라는 숏코드를 이중 대괄호로 묶어서 본문에 적으면 [triki_short_real] 는 대괄호 1개로 묶여 제대로 표현 되지만, [triki_short_fake] 는 본문에 대괄호가 두 개로 묶인 상태로 표현이 되는 것입니다.

테마 자체에서 본문의 숏코드 실행을 금지 시키기

또다른 방법은 테마 자체에서 본문의 숏코드 실행을 금지 시키는 방법이 있습니다. 테마 파일의 functions.php 파일에서 아래와 같이 the_content 함수에 필터를 적용 시키는 것입니다.

// Disable Shortcodes in the_content
function remove_shortcode_triki( $content ) {
    $content = strip_shortcodes( $content );
    return $content;
}
add_filter('the_content', 'remove_shortcode_triki');

위 코드를 해석 해보면 아주 간단합니다. remove_shortcode_triki 라는 함수를 만드는데, 이 함수는 파라미터로 받은 $content 에서 워드프레스 내장 함수인 strip_shortcodes 를 이용해 숏코드를 제거 해버리는 것입니다.

strip_shortcode 의 단점

하지만 이 방법은 근본적인 해결책은 아닙니다. strip_shortcode 는 숏코드 실행을 방지 하는 것이 아닌 숏코드 자체를 본문에서 없애 버리는 것이거든요. 그래서 사용에 각별한 주의를 필요로 합니다.

do_shortcode 필터를 해제하여 숏코드 실행 방지 하기

마지막으로 소개할 방법은 지금 제가 이 블로그에 적용하고 있는 방법으로, the_content 에 적용된 do_shortcode 필터를 해제하여 숏코드 실행을 방지 하는 것입니다.

do_shortcode 필터는 대괄호로 묶인 숏코드를 실행시켜주는 것인데, 이를 해제 해버림으로써 숏코드가 실행되지 않도록 하는 것이죠.

방법은 간단합니다. 테마의 functions.php 파일에 아래의 코드를 추가해주면 됩니다.

remove_filter('the_content', 'do_shortcode', 11);

do_shortcode 필터 해제의 단점

물론 이 방법도 한가지 단점이 있습니다. 바로 본문에 실제 사용할 숏코드를 지속적으로 사용하고 있는 경우엔 모든 숏코드가 실행이 안된다는 것인데요. 평소에 본문에서 숏코드 실행을 하지 않는 사용자라면 가장 적합한 방법이 아닐까 하는 생각이 드네요.

제가 생각하는 가장 리스크가 적은 방법이 이 방법이 아닐까 합니다.


참고자료