워드프레스 요약문(Excerpt) 글자 수 조정하기 - 워드프레스 정보꾸러미
베스트셀링 인기 워드프레스 테마 Top 30 자세한 정보

워드프레스 요약문(Excerpt) 글자 수 조정하기

Last Updated: 2015년 7월 28일 | 9개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기

어제 오늘 갑자기 워드프레스 블로그의 요약문 길이가 줄어들었네요. 영문은 그대로인데, 한글만 그런 것으로 봐서 아마 글자 바이트 수 문제 같기도 한데 정확한 이유는 모르겠습니다. 어쨌든 이대로는 한글 사이트의 모양이 보기가 좋지 않게 바뀌어서 요약문(Excerpt) 길이를 조정해야 했습니다. 한글 사이트만 운영한다면 다음과 같은 함수를 테마 함수 파일에 추가하여 쉽게 수정이 가능합니다.

function custom_excerpt_length( $length ) {
return 100;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

이 함수로 제어할 경우 단어 수로 제한된다고 하는데, 테스트가 필요할 것 같습니다. (가령 100으로 설정해도 직접 단어수를 세어 보니 영문에서는 대충 맞는 것 같은데, 한글에서는 30단어도 안 되네요.) 현재 사이트에 적절한 길이에 해당하는 숫자를 설정하도록 합니다. 하나의 언어로 사이트를 운영하는 경우 위의 함수로 요약문 길이를 일괄적으로 제어하시면 되겠습니다.

이 사이트와 같이 영문 사이트와 한글 사이트를 동시에 운영하는 경우 위의 함수로 두 언어 모두를 제어하지 못할 수 있을 것입니다. 이 사이트에서는 다음과 같은 함수를 사용하여 영문과 한글에 글자 수를 달리하여 적용했습니다.

function custom_length_excerpt($word_count_limit) {
$content = wp_strip_all_tags(get_the_content() , true );
echo wp_trim_words($content, $word_count_limit) . ' <a class="read-more" href="' . get_permalink( get_the_ID() ) . '"> Read More </a>';
}

함수에 echo가 되어 있으므로 호출은

<?php custom_length_excerpt(60); ?>

식으로 하면 됩니다. (이 호출문을 index.php 또는 해당 파일의 the_exceprt() 대신에 사용하도록 합니다.)

이 함수는 wp_trim_words 함수를 사용하여 단어수 기준으로 자르기 때문에 한글이 잘리지 않고 잘 표시되네요. 하지만 이 함수의 경우 테스트를 해 보니 잘 되는 테마도 있고 잘 안 되는 테마도 있네요. (한글과 영문에서 달리 적용하는 방법은 여기를 참고하시기 바랍니다.)

이외에 다음과 같은 함수도 가능합니다.

function get_excerpt($count){
$permalink = get_permalink($post->ID);
$excerpt = get_the_content();
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, $count);
$excerpt = $excerpt.'... <a href="'.$permalink.'">Read More</a>';
return $excerpt;
}

하지만 이 경우 한글에서는 잘리는 부분이 깨져나올 수 있습니다. 그런 경우에는 mb_strimwidth 함수를 사용하여 글 길이를 제한해 보도록 합니다.

또 다른 함수로 다음과 같은 것도 있습니다.

function get_excerpt(){
$excerpt = get_the_content();
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
$excerpt = strip_shortcodes($excerpt);
$excerpt = strip_tags($excerpt);
$excerpt = substr($excerpt, 0, 50);
$excerpt = substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
$excerpt = $excerpt.'... <a href="'.$permalink.'">Read More</a>';
return $excerpt;
}
// Source: WordPress.com

이 함수도 마찬가지로 한글에서는 잘리는 부분이 깨질 수 있습니다.



9 개 댓글

Leave a Comment

  1. 안녕하세요. 비슷한 글을 못찾아서 여기에 남깁니다.
    현재 GP Premium을 사용하고 수정하고 있습니다.
    http://zzang.kr

    질문) 우측 사이드에 최신글에 노출 되는 것 중 길이가 긴 것은 ....으로 처리 하고 싶은데요. 방법이 있을까요?

    응답
    • 안녕하세요?

      CSS를 사용하여 텍스트 길이가 길면 말줄임표로 처리할 수 있을 것입니다.

      가령 제 블로그의 브레드크럼에서 글 제목이 길면 글자수를 제한하고 말줄임표(...)로 처리되고 있습니다.

      https://www.screencast.com/t/c1VZieP05I

      구글을 검색해보면 이와 관련한 다양한 글을 찾아볼 수 있을 것입니다.

      제 블로그의 브레드크럼에 적용된 CSS 코드는 다음과 같습니다. 참고하시기 바랍니다.

      display: inline-block;
      padding: 0;
      margin-top: 0px;
      vertical-align: middle;
      max-width: 500px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;

      다른 방법으로 Recent Posts Widget With Thumbnails와 같은 플러그인을 사용하면 타이틀 길이를 제한할 수 있을 것입니다.

      https://wordpress.org/plugins/recent-posts-widget-with-thumbnails/

      응답
      • 안녕하세요. 답변 감사합니다.
        속도 때문에 플러그인을 사용 안하고 css를 이용해 보려 합니다.
        위 css 코드를
        테마디자인 >> 사용자테마 정의하기 >> 추가 css 에 삽입하면 될까요?

        * 추가 관련 질문:
        여기에 있는 추가 css 부분은 테마 업데이트와 상관있겠죠? 글을 읽어보니 child테마를 만들어야 업데이트와 무관하다고 했던것 같아서요.

        감사합니다.

      • 위의 코드를 상황에 맞게 응용하시기 바랍니다.

        다음과 같은 문서도 참고해보세요:

        https://stackoverflow.com/questions/26973570/setting-a-max-character-length-in-css/26975271

        https://stackoverflow.com/questions/3922739/limit-text-length-to-n-lines-using-css

        사용자 정의하기 아래에 추가하시면 테마를 업데이트해도 초기화되지 않고 유지됩니다.

      • 참고로 최근 글 표시 플러그인을 사용해도 속도에는 큰 영향은 없을 것입니다.

        CSS로 조정하는 것이 쉽지 않은 경우 플러그인으로도 테스트해볼 수 있을 것입니다.

  2. 안녕하세요. 요약문 검색해서 찾아왔는데요.
    function custom_excerpt_length( $length ) {
    return 100;
    }
    add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

    문구를 어디에 입력을 해야하는지 정확히 알려주시면 감사하겠스빈다.

    응답
    • 안녕하세요? 블로그를 방문해주셔서 감사합니다.

      모든 사용자 정의 함수는 테마의 함수 파일(functions.php)에 추가해야 합니다. 반드시 자식 테마(차일드 테마)를 만든 후에 작업해야 추후에 테마가 업데이트되더라도 수정 사항이 사라지지 않고 유지됩니다.

      "사용자 코드는 어떻게 추가하나요?"( https://www.thewordcracker.com/basic/how-to-add-custom-codes-to-wordpress/ ) 글을 참고해보시기 바랍니다.

      응답
  3. 위의 방법으로 글자 수가 조정되지 않는다면 테마 옵션에서 글자 수를 조정하는 옵션을 제공하거나 테마 자체에서 다른 함수를 사용하여 글자 수를 조정하는 경우일 수 있습니다.

    응답
  4. 만약 숏코드가 요약문에 그대로 표시되는 경우에는 strip_shortcodes 함수를 사용할 수 있습니다.

    https://www.thewordcracker.com/scribblings/how-to-remove-shortcodes-in-wordpress-excerpts/ 참고 

    응답