[워드프레스] br 태그가 제대로 작동하지 않는 경우

Last Updated: 2016년 02월 07일 4개 댓글

워드프레스에서 줄바꿈 태그(br)나 문단 나누기 태그(p)가 제대로 작동하지 않는다는 문제를 호소하는 사용자를 간혹 접하게 됩니다. <br /> 태그가 제대로 작동하지 않을 경우 다음 사항을 체크해보시기 바랍니다.

TinyMCE Advanced 플러그인 비활성화 또는 사용

TinyMCE Advanced 플러그인을 사용하는 경우 이 플러그인을 비활성화하도록 합니다. (TinyMCE Advanced 플러그인으로 인해 이런 문제가 발생할 수 있습니다.) 또는, 이 플러그인을 설치하지 않았다면 이 플러그인을 설치하여 이 문제가 해결되는지 확인해봅니다.

바르지 않은 XHTML 자동 수정 비활성화

관리자 페이지의 왼쪽 사이드바에서 설정 > 쓰기를 클릭하고 "워드프레스는 바르지 않은 XHTML을 자동으로 바로 잡습니다."의 체크를 해제합니다.

글 본문의 태그를 제거하는 함수가 사용되지 않았는지 확인

테마 함수 파일에서 remove_filter('the_content','wpautop');가 사용되고 있는지 확인해봅니다. 그리고 태그를 제거하는 함수가 사용되고 있지 않은지 확인해봅니다. (예를 들어 the_contentstrip_tags가 적용되면 글에서 태그가 제거됩니다.)

필터 사용

다음 필터를 사용해보도록 합니다. 아마 이 필터를 사용하면 대부분 문제가 해결되지 않을까 생각됩니다. (잘 안 되면 TinyMCE Advanced 플러그인을 활성화거나 비활성화한 후에 각각 적용해보시기 바랍니다.)

function clear_br($content){
return str_replace("<br />","<br clear='none'/>", $content);
}
add_filter('the_content', 'clear_br');

또 다른 방법으로 다음 필터를 사용해보도록 합니다.

add_filter( 'tiny_mce_before_init', 'my_switch_tinymce_p_br' );

function my_switch_tinymce_p_br( $settings ) {
$settings['forced_root_block'] = false;
return $settings;
}

이 필터를 사용하면 Enter를 치면 <br> 태그가 입력되고, Shift+Enter를 입력하면 새 문단이 생성됩니다.

숏코드 사용

모든 방법을 다 동원해도 잘 안 되면 숏코드를 만들어 br 태그를 추가하는 방법을 생각해볼 수 있습니다만, 이 방법은 귀찮기 때문에 그다지 바람직하지 않을 것 같습니다.

function bio_shortcode($atts, $content = null) {
$content = wpautop(trim($content));
return '<div class="bio">' . $content . '</div>';
}
add_shortcode('bio', 'bio_shortcode');

[bio] 숏코드를 원하는 곳에 추가하면 줄바꿈 태그가 추가될 것입니다. wpautop 함수에 대한 자세한 내용은 WordPress Codex 페이지를 참고해보시기 바랍니다.

참고:

 


4 개 댓글

Leave a Comment

  1. 엔터를 치면 br태그가 입력되게 하고 싶은데, 두번째 필터를 테마 함수파일에 무작정 추가했다가 큰일날 뻔했네요.테마함수파일안에 넣기만 하면 되나요? 따로 선언을 할 필요는 없는지

    응답
      • 위의 필터를 작동시키는데 성공하였는데, 데이터를 변경할 때마다 오류화면이 뜨네요.. 변경이 되긴하는데 뒤로가기 버튼을 눌러야 합니다.Warning: Cannot modify header information - headers already sent by (output started at /WEB/nalchifarm/html/wp-content/themes/ultra/functions.php:1) in/WEB/nalchifarm/html/wp-admin/post.php on line 197이라고 에러가 나네요..

      • 안녕하세요?

        혹시나 해서 위의 필터를 테스트해봤는데요, 하지만 오류가 발생하지 않고 잘 작동하네요.
        테스트 환경은 카페24 호스팅 서버입니다.

        위의 코드를 그대로 복사하면 좋겠지만 "중급" 글의 경우 복사 방지가 되어 있어 아마 입력하면서 어떤 부분에서 오류가 발생하지 않았나 생각됩니다.
        http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php 글을 참고해보시기 바랍니다.
        (함수 중간이나 함수의 앞 혹은 뒤에) 쓸데없는 불필요한 화이트스페이스나 특수문자가 포함되지 않았는지... 오타가 없는지 확인해보시기 바랍니다.

        참고로 글 무단 복사 문제 때문에 모든 글에 대하여 복사 금지 코드를 추가했지만 사용자들의 불편 때문에 현재 "중급" 글만 복사 금지 코드가 적용되어 있습니다. 조금 더 지켜보고 이 부분에 대한 복사 금지 코드도 제거할지 결정할 예정입니다.

        그럼, 수고하세요.