[워드프레스] 기본 콘텐츠 포매팅 함수 – the_content 필터 거치지 않고 the_content 효과 내기

이거 뭐라고 표현해야 할지 모르겠는데 여튼간에, 기본 콘텐츠 포매팅 함수라고 대충 써 봤다. 그니까 뭐냐면… 각종 플러그인들이 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;

각 함수들의 설명은 워드프레스 코드를 뜯어 보면 나온다. 이클립스에서 코드 점프 하면 된다. 내가 궁금했던 건 단순 줄바꿈을 brp 태그로 변경해 주는 거였는데, 그 함수는 wpautop()였다. wptexturize()'",,로 바꿔 주는 함수다.

뭐, 이정도면 됐겠지?

카테고리 글 목록 👉

대표글

“[워드프레스] 기본 콘텐츠 포매팅 함수 – the_content 필터 거치지 않고 the_content 효과 내기”에 대한 5개의 응답

  1. 좋은 정보 공유해주셔서 감사합니다. 그리고.. 질문이 있어 또 들렸습니다. ^^;;;;;
    검색, 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) 뭐가 잘못 된건지 힌트 좀 주시면 감사하겠습니다. (번거롭게 죄송해요 ㅠㅠ)

    1. 이건 저도 테스트를 해봐야 해서 지금 당장 답을 드릴 수가 없네요.

      1. 질문 드려놓고 다른 일로 깜빡 잊었다가 다시 들렸습니다. 새해 복 많이 받으세요~ ^^

    2. 변수 세팅을 한 뒤에 template 안에서 global $var_name; 선언을 하면 사용할 수 있거든요. ‘아마추어’ 님이 하신대로 말예요. 그래서 제 생각엔 다른 오류가 있는 것 같아요. 제가 테스트해 보니 global 선언으로 작동하거든요.

      참고로, get_template_part()include, require를 함수 안에서 처리하기 때문에 global 선언을 해야 바깥 변수를 사용할 수 있는 거죠.

      1. 답글 감사합니다.. 저는 아직도 원인을 못 찾아서.. 일단 방치중예요. ^^;;

아마추어 에 응답 남기기응답 취소