请选择 进入手机版 | 继续访问电脑版
MSIPO技术圈 首页 IT技术 查看内容

wordpress的wp_trim_words摘要没有截取到指定的字符长度的问题解决

2023-07-13

一、问题描述

在imqd.cn文章列表中,用于将正文内容截取保留前75个字的方法突然没效果了。

<p class="post-desc text-black-50 d-none d-md-block">
				<?php
				echo wp_trim_words( get_the_content(), 75, '...');
				?>
</p>

直接展示了所有的正文内容,导致文章列表变得非常长,不好看。

正确的应该要这样:

Untitled

二、问题排查

  1. 首先看看代码是否被动过,发现没有,因为在本地测试还是正常的
  2. 另外一个给客户做的网站发现也是一样的问题
  3. 发现可能是wp自动更新了版本的原因,当前版本是6.0.1,在之前的版本6.0中是没有这个问题的
  4. 然后我在本地将wordpress更新到6.0.1,发现还是正常的,并没有出现线上这种情况
  5. 我确认wp_trim_words 这个函数WP官方依旧支持,所以可能是线上服务器环境不一致,或者PHP版本不一致导致的,但是这个方法是WP私有的,应该不受环境影响,所以目前还是不知道问题出在哪里

三、问题解决

没有找到问题根本原因,我只好换种方式来解决。

在网站上,直接用摘要来代替内容。

<?php
				echo wp_trim_words( get_the_excerpt(), 75, '...');
?>

我还对文章摘要进行了判断。如果文章没有摘要,就会自动用正文显示,所以我还加了样式方式,超过3行则自动出现省略号来解决。

CSS文件:

.threelines {
    word-break: break-all;
    overflow: hidden;
    text-overflow: ellipsis;
		/*以下3行是核心代码*/
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}

/*然后还要给p标签添加一个高度,避免在不支持以上属性的浏览器下不生效*/
.post-body .post-desc {
    margin-bottom: 0;
    height: 75px;
}

另外,还准备禁止WP的自动更新,以便再次出现类似的这种情况,在wp-config.js中添加如下代码即可:

define( 'WP_AUTO_UPDATE_CORE', false );

至此问题解决。即wp的方法+CSS的方法双结合来实现。

相关阅读

手机版|MSIPO技术圈 皖ICP备19022944号-2

Copyright © 2024, msipo.com

返回顶部