修复自动获取摘要功能的关键函数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 删除。

评论 (0)COMMENT

登录 账号发表你的看法,还没有账号?立即免费 注册