워드프레스에서 줄바꿈 태그(br)나 문단 나누기 태그(p)가 제대로 작동하지 않는다는 문제를 호소하는 사용자를 간혹 접하게 됩니다. <br /> 태그가 제대로 작동하지 않을 경우 다음 사항을 체크해보시기 바랍니다.
TinyMCE Advanced 플러그인 비활성화 또는 사용
TinyMCE Advanced 플러그인을 사용하는 경우 이 플러그인을 비활성화하도록 합니다. (TinyMCE Advanced 플러그인으로 인해 이런 문제가 발생할 수 있습니다.) 또는, 이 플러그인을 설치하지 않았다면 이 플러그인을 설치하여 이 문제가 해결되는지 확인해봅니다.
바르지 않은 XHTML 자동 수정 비활성화
관리자 페이지의 왼쪽 사이드바에서 설정 > 쓰기를 클릭하고 "워드프레스는 바르지 않은 XHTML을 자동으로 바로 잡습니다."의 체크를 해제합니다.
글 본문의 태그를 제거하는 함수가 사용되지 않았는지 확인
테마 함수 파일에서 remove_filter('the_content','wpautop');가 사용되고 있는지 확인해봅니다. 그리고 태그를 제거하는 함수가 사용되고 있지 않은지 확인해봅니다. (예를 들어 the_content에 strip_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 페이지를 참고해보시기 바랍니다.
참고:
엔터를 치면 br태그가 입력되게 하고 싶은데, 두번째 필터를 테마 함수파일에 무작정 추가했다가 큰일날 뻔했네요.테마함수파일안에 넣기만 하면 되나요? 따로 선언을 할 필요는 없는지
안녕하세요? 위의 필터가 제대로 작동하지 않으면 Shift+Enter를 눌러 br 태그를 삽입해야 할 것 같습니다(https://www.thewordcracker.com/basic/understanding-line-breaks-in-wordpress/).
위의 필터를 작동시키는데 성공하였는데, 데이터를 변경할 때마다 오류화면이 뜨네요.. 변경이 되긴하는데 뒤로가기 버튼을 눌러야 합니다.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 글을 참고해보시기 바랍니다.
(함수 중간이나 함수의 앞 혹은 뒤에)
쓸데없는불필요한 화이트스페이스나 특수문자가 포함되지 않았는지... 오타가 없는지 확인해보시기 바랍니다.참고로 글 무단 복사 문제 때문에 모든 글에 대하여 복사 금지 코드를 추가했지만 사용자들의 불편 때문에 현재 "중급" 글만 복사 금지 코드가 적용되어 있습니다. 조금 더 지켜보고 이 부분에 대한 복사 금지 코드도 제거할지 결정할 예정입니다.
그럼, 수고하세요.