WordPress Excerpt

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

어제 오늘 갑자기 워드프레스 블로그의 요약문 길이가 줄어들었네요. 영문은 그대로인데, 한글만 그런 것으로 봐서 아마 글자 바이트 수 문제 같기도 한데 정확한 이유는 모르겠습니다. 어쨌든 이대로는 한글 사이트의 모양이 보기가 좋지 않게 바뀌어서 요약문(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

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

떠나시기 전에 아무 댓글(Comments)이라도 남겨두세요.
기부를 통해 이 블로그의 운영을 후원하실 수 있습니다.