Functions.phpにコードがあります。
function string_limit_words($string, $Word_limit)
{
$words = explode(' ', $string, ($Word_limit + 1));
if(count($words) > $Word_limit)
array_pop($words);
return implode(' ', $words);
}
しかし、私は文字数の抜粋を制限する必要があります、あなたは私を助けてもらえますか?
このコードを私の最後のプロジェクトの1つで使用しました。
function ng_get_excerpt( $count ){
$permalink = get_permalink( $post->ID );
$excerpt = get_the_content();
$excerpt = strip_tags( $excerpt );
$excerpt = mb_substr( $excerpt, 0, $count );
$excerpt = mb_substr( $excerpt, 0, strripos( $excerpt, " " ) );
$excerpt = rtrim( $excerpt, ",.;:- _!$&#" );
$excerpt = $excerpt . '<a href="'.$permalink.'" style="text-decoration: none;"> (...)</a>';
return $excerpt;
}
私はここからそれを得ました:
http://wordpress.org/support/topic/limit-excerpt-length-by-characters
末尾に句読点を使用できず、最後の完全なWordで終了するという利点があります。
@ medhamza7 または @bainternet または @fuxia で示唆されているようにフィルターを使用することが好ましい。
この答えから関数 utf8_truncate()
を使用してください そしてwp_trim_excerpt()
を通してあなたの道を戦いなさい。
テストされていないサンプルコード
add_filter( 'excerpt_more', 'wpse_69436_excerpt_more' );
function wpse_69436_excerpt_more( $more )
{
add_filter( 'wp_trim_excerpt', 'wpse_69436_trim_excerpt' );
// we remove the more text here
return '';
}
function wpse_69436_trim_excerpt( $excerpt )
{
return utf8_truncate( $excerpt, 300 );
}
WordPressには、excerpt_lengthという便利な名前のフィルタがあり、いくつかの文字を受け入れます。
function custom_excerpt_length( $length ) {
return 50;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
制限を50に変更します。
@ toschoコメントごとに更新:
それは上記の解決策が同様に言葉のためであり、文字のためではないので、ここで簡単なものです:
add_filter('the_excerpt','excerpt_char_limit');
function excerpt_char_limit($e){
return substr($e,0,50);
}
もっと良い方法はget_the_excerpt
フィルタを使うことです。
function get_excerpt($excerpt="",$limit=140){
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
$excerpt = strip_shortcodes($excerpt);
$excerpt = strip_tags($excerpt);
$excerpt = mb_substr($excerpt, 0, $limit);
$excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
$excerpt = $excerpt.'...';
return $excerpt;
}
add_filter('get_the_excerpt',"get_excerpt");
$limit=140
を必要な文字数に変更します。あなたが別の方法でしたい場合も:
add_filter('get_the_excerpt',function ($excerpt="",$limit=140){
$excerpt = preg_replace(" (\[.*?\])",'',$excerpt);
$excerpt = strip_shortcodes($excerpt);
$excerpt = strip_tags($excerpt);
$excerpt = mb_substr($excerpt, 0, $limit);
$excerpt = mb_substr($excerpt, 0, strripos($excerpt, " "));
$excerpt = trim(preg_replace( '/\s+/', ' ', $excerpt));
$excerpt = $excerpt.'...';
return $excerpt;
});
これは既存の関数名get_excerpt
のような衝突を避けるためです。