修复自动获取摘要功能的关键函数wp_trim_words()失效的问题
今天看有很多小伙伴的摘要功能出bug了,我看了一下我的网站,也bug了。 为什么会出这个bug?问题在…
今天(2022-8月2号)看有很多小伙伴的摘要功能出bug了,我看了一下我的网站,也bug了。
为什么会出这个bug?
问题在:
出bug的都是使用了官方函数wp_trim_words()自动获取文章内容成为摘要。
官方函数:
wp_trim_words( string $text, int $num_words = 55, string $more = null ) Trims text to a certain number of words.(将文本裁剪为一定数量的单词。)
目前wp自带的字符截取函数wp_trim_words(),不能正确截取字符串长度,已单独测试无效。单独中英文,数字,都不能截取。
修复代码如下,复制放到当前主题函数文件functions.php就可以了。网站后台->外观->主题文件编辑器->模板函数(functions.php)
/** * 字符截断函数 * @since onlyfront 1.0 * @$str 要截取的字符串 * @$start 开始位置 * @$long 长度 * @$trimmarker 后缀 */ function short_string($str ,$start , $long ,$trimmarker ){ $output = mb_substr($str,$start,$long,'utf-8'); $strlen = mb_strlen($str,'utf-8'); if($strlen > $long){ return $output.$trimmarker; }else{ return $output; } } /** * 自动获取摘要 * @since onlyfront 1.0 */ function wper_auto_excerpt($excerpt) { global $post; if ( has_excerpt() && ! is_attachment() ) { $excerpt = wp_strip_all_tags($post->post_excerpt,true); }else{ $seo_desc = get_post_meta($post->ID,'seo_desc',true); if($seo_desc){ $excerpt = $seo_desc; }else{ $excerpt = short_string(wp_strip_all_tags($post->post_content,true),0,55,'...'); // 更新摘要 二选一 ,更新了之后下次就不会再重复从文章内容截取,能有效提高速度 // 1、更新摘要到自定义字段 //update_post_meta($post->ID,'seo_desc',$excerpt); // 2、更新摘要到post_excerpt wp_update_post( array( 'ID' => $post->ID, 'post_excerpt' => $excerpt ) ); } } return $excerpt; } add_filter( 'get_the_excerpt', 'wper_auto_excerpt' );
类别:WordPress入门、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!