自定义摘录返回52个字符,而不是52个单词

时间:2016-02-26 作者:Stephen

我有一个自定义函数,可以获取手动输入的摘录并对其进行精简,但我遇到的问题是,它将字符精简为52个,而我希望它像正常摘录一样返回前52个单词。

以下是允许我修剪手动输入摘录的自定义项

function themeTemplate_trim_excerpt( $content ) {
    return substr( strip_tags( $content ), 0, 52 );
}
remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'template_trim_excerpt\');
这是我能够剪切手动输入的摘录的唯一方法。

如何使其修剪,使其仅显示前52个单词?

感谢您的反馈:)

2 个回复
最合适的回答,由SO网友:Adam 整理而成

您想要的功能是wp_trim_words(), 示例:

function themeTemplate_trim_excerpt( $content ) {
    $more = \'...\'; //where $more is optional
    return wp_trim_words($content, 52, $more);
}

remove_filter(\'get_the_excerpt\', \'wp_trim_excerpt\');
add_filter(\'get_the_excerpt\', \'template_trim_excerpt\');

SO网友:jgraup

explode, array_filter, array_slice, 和implode 可以通过查看空白操作来拉动世界。

function themeTemplate_trim_excerpt( $content ) {

    // split the content by spaces, 
    // remove excess whitespace
    // pull the first 52 items, 
    // glue back together...

    return implode( \' \', array_slice( array_filter( explode( \' \', $content ) ), 0, 52 ) );
}

remove_filter( \'get_the_excerpt\', \'wp_trim_excerpt\' );
add_filter( \'get_the_excerpt\', \'template_trim_excerpt\' );
故障
// Convert the string to an array
$words = explode( \' \', $content );

// Remove any empty values
$words = array_filter($words);

// Grab the first 10 elements from the array
$first_x_words = array_slice($words, 0, 10);

// Convert the array to a string
$output = implode ( \' \', $first_x_words );

// Final value
echo $output;
由于这些操作作用于空格,如果内容中有HTML,则可以将每个属性视为一个单词wp_trim_words() - [ L2951 ]

相关推荐

Strip div From Excerpt

我在特定页面中有\\u extract(),我需要去掉一个div并保留文本,但只保留在该页面的摘录中。我相信我需要创建一个带有自定义摘录的函数,但我不知道该怎么做。测试了我在这里找到的几种解决方案,但没有任何效果。