Posts, Post Types: In `wp_trim_words()` make sure the `$num_words` parameter is always an integer, as documented, to avoid a PHP warning.

Props donmhico, pikamander2.
Fixes #47867.

git-svn-id: https://develop.svn.wordpress.org/trunk@45796 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2019-08-14 17:17:51 +00:00
parent d4a305292f
commit a58eb86d5e
2 changed files with 12 additions and 1 deletions

View File

@ -3728,7 +3728,7 @@ function wp_trim_excerpt( $text = '', $post = null ) {
* *
* @param int $number The maximum number of words. Default 55. * @param int $number The maximum number of words. Default 55.
*/ */
$excerpt_length = apply_filters( 'excerpt_length', $excerpt_length ); $excerpt_length = (int) apply_filters( 'excerpt_length', $excerpt_length );
/** /**
* Filters the string in the "more" link displayed after a trimmed excerpt. * Filters the string in the "more" link displayed after a trimmed excerpt.
@ -3773,6 +3773,7 @@ function wp_trim_words( $text, $num_words = 55, $more = null ) {
$original_text = $text; $original_text = $text;
$text = wp_strip_all_tags( $text ); $text = wp_strip_all_tags( $text );
$num_words = (int) $num_words;
/* /*
* translators: If your word count is based on single characters (e.g. East Asian characters), * translators: If your word count is based on single characters (e.g. East Asian characters),

View File

@ -73,4 +73,14 @@ class Tests_Formatting_WPTrimWords extends WP_UnitTestCase {
restore_previous_locale(); restore_previous_locale();
$this->assertEquals( $expected, $actual ); $this->assertEquals( $expected, $actual );
} }
/**
* @ticket 47867
*/
function test_works_with_non_numeric_num_words() {
$this->assertEquals( '', wp_trim_words( $this->long_text, '', '' ) );
$this->assertEquals( '', wp_trim_words( $this->long_text, 'abc', '' ) );
$this->assertEquals( '', wp_trim_words( $this->long_text, null, '' ) );
$this->assertEquals( 'Lorem ipsum dolor', wp_trim_words( $this->long_text, '3', '' ) );
}
} }