이거 뭐라고 표현해야 할지 모르겠는데 여튼간에, 기본 콘텐츠 포매팅 함수라고 대충 써 봤다. 그니까 뭐냐면… 각종 플러그인들이 the_content()
를 건드리기 전의 순수한 the_content()
를 말하는 거다.
예컨대, 팝업을 띄운다고 하자. 내용을 입력하고 첫 화면에 띄우고 싶다. 그런데 줄바꿈 한 건 p
로 감싸고 싶고, SNS 버튼 플러그인이 붙여 준 SNS 버튼은 떼버리고 싶다. 어떻게 해야 할까? the_content
필터를 통과시키면 SNS 버튼이 붙어 버리고, 통과시키지 않으면 줄바꿈이 되지 않는다! 줄바꿈뿐이 아니다. 큰따옴표도 제대로 표현되지 않고, 워드프레스가 제공하는 Content Formatting에 관련한 여러 가지 효과를 모두 제대로 사용할 수 없게 된다. SNS 버튼 플러그인 때문에!
방법이 있다. 워드프레스는 Open Source니 검색을 했다. the_content
로 전체 파일 검색을 한 거다. 그러니, the_content
필터에 기본 세팅되는 함수들을 찾을 수 있었다.(워드프레스 3.5 기준 wp-includes/default-filters.php
파일의 135라인) 그렇다. 이 함수들을 그냥 주욱 써 주면 되는 것이다.
아래 코드처럼 써 주면 된다.
$popover_content = wptexturize($popover_content); $popover_content = convert_smilies($popover_content); $popover_content = convert_chars($popover_content); $popover_content = wpautop($popover_content); $popover_content = shortcode_unautop($popover_content); $popover_content = prepend_attachment($popover_content); echo $popover_content;
각 함수들의 설명은 워드프레스 코드를 뜯어 보면 나온다. 이클립스에서 코드 점프 하면 된다. 내가 궁금했던 건 단순 줄바꿈을 br
과 p
태그로 변경해 주는 거였는데, 그 함수는 wpautop()
였다. wptexturize()
는 '
와 "
를 ‘
,’
와 “
,”
로 바꿔 주는 함수다.
뭐, 이정도면 됐겠지?
좋은 정보 공유해주셔서 감사합니다. 그리고.. 질문이 있어 또 들렸습니다. ^^;;;;;
검색, phpschool 등을 찾아봐도 워프와 직접적으로 관련된 내용은 찾기가 힘들고, codex 봐도 몰라요. ㅠㅠ
1) 부모(?)페이지에서 get_template_part( ‘content’, ‘list-widget’ ); 로 content-list-widget.php 파일을 불러오는데 변수 공유가 안되요. php에서 include 나 require로 불러들여도 변수 공유가 가능한걸로 알고 있는데요…
2) 하고 싶은 것 : 본문글 하단에 현재 카테고리 글 목록을 불러와서 현재 보고 있는 글은 별도 표시를 하고 싶은데요.. content-list-widget.php 에서 아래와 같이 코드를 작성했어요.
global $current_post_id; // 불러오는 부모(?) 페이지에서 정의한 변수(부모페이지 변수값 : 2589)
echo ‘현재 글 id = ‘ . $current_post_id; // ‘ ‘ 출력(아무것도 안 찍힘, 현재 보고 있는 본문글 id)
echo ‘각 글 id = ‘ . get_the_ID(); // 정상 출력(아래 코드에서 루프 돌면서 해당 글 id 정상 출력)
$current_post_class = ( get_the_ID() == $current_post_id )? ‘current-post-item’ : ”; // 비교, css 클래스 부여
3) 뭐가 잘못 된건지 힌트 좀 주시면 감사하겠습니다. (번거롭게 죄송해요 ㅠㅠ)
이건 저도 테스트를 해봐야 해서 지금 당장 답을 드릴 수가 없네요.
질문 드려놓고 다른 일로 깜빡 잊었다가 다시 들렸습니다. 새해 복 많이 받으세요~ ^^
변수 세팅을 한 뒤에 template 안에서
global $var_name;
선언을 하면 사용할 수 있거든요. ‘아마추어’ 님이 하신대로 말예요. 그래서 제 생각엔 다른 오류가 있는 것 같아요. 제가 테스트해 보니global
선언으로 작동하거든요.참고로,
get_template_part()
는include
,require
를 함수 안에서 처리하기 때문에global
선언을 해야 바깥 변수를 사용할 수 있는 거죠.답글 감사합니다.. 저는 아직도 원인을 못 찾아서.. 일단 방치중예요. ^^;;