class my_menu extends WP_Widget
{
function widget($args, $instance)
{
// Excerpt length filter
$new_excerpt_length = create_function('$length', "return " . $excerpt_length . ";");
if ( $instance["excerpt_length"] > 0 ) {
add_filter('excerpt_length', $new_excerpt_length, 999);
}
//...
}}
投稿に抜粋がない場合、このフィルタは効果的です。抜粋のある投稿に同じフィルタを適用する方法
言い換えれば、投稿に実際の抜粋があって、それがまったくそれをフィルタリングしていない場合、抜粋全体が表示されます。ただし、投稿に抜粋がない場合、get_the_excerpt()呼び出しは "excerpt_length"で指定された単語数だけを返すようにフィルタ処理されます
私はしばらく前に article について投稿しました。
function wp_trim_all_excerpt($text) {
// Creates an excerpt if needed; and shortens the manual excerpt as well
global $post;
$raw_excerpt = $text;
if ( '' == $text ) {
$text = get_the_content('');
$text = strip_shortcodes( $text );
$text = apply_filters('the_content', $text);
$text = str_replace(']]>', ']]>', $text);
}
$text = strip_tags($text);
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
$text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
return apply_filters('wp_trim_excerpt', $text, $raw_excerpt);
}
remove_filter('get_the_excerpt', 'wp_trim_excerpt');
add_filter('get_the_excerpt', 'wp_trim_all_excerpt');