WordPress - 在标准小部件中限制the_title()字符

3
我将标准的“最新文章”小工具复制到了function.php文件中,取消了注册并注册了我的新类。在小工具中,我看到了这个函数,它负责在A标签中显示最新文章的标题:
<?php while ( $r->have_posts() ) : $r->the_post(); ?>

        <li>
            <a href="<?php the_permalink(); ?>">
                <?php  if ( get_the_title() ) {
                    $t = the_title();
                    $t = substr($t, 0, 40); /// this doesn't work

                }else{
                    the_ID();
                }
                ?>
            </a>
...
...

但是这个 substr() 函数不起作用 - 标题始终显示全部。我做错了什么?

尝试将 $t = the_title(); 替换为 $t = get_the_title();the_title() 将标题输出到屏幕上,不返回任何值。 - hfatahi
是的,dragos.bd之前回答过 - the_title“有回声”,所以这个也可以 - the_title('','',false); - Wordica
2个回答

3
你也可以使用mb_substr(),它的功能与substr几乎相同,但区别在于你可以添加一个新参数来指定编码类型,无论是UTF-8还是其他编码。
尝试一下:
$t =  mb_substr($t, 0, 40, 'UTF-8');

稍后编辑:更改

 $t = the_title();

使用

$t = get_the_title();

你正在使用the_title而不是get_the_title将其赋值给一个特定的变量。请确保在所有操作完成后echo $t。

你确定在 substr 后面使用 echo $t 吗? - TheBosti
是的,即使使用echo也没有改变...这与小部件有关,而不是substr。 - Wordica
因为 the_title 直接打印结果,你不能将其赋值给特定变量。请阅读 the_title wp codex。 - TheBosti
好的,更明确一些:如果您有一个帖子标题,例如“Bla bla title”,请使用以下代码:the_title(); 结果是“Bla bla title”,无需自己编写任何echo或print语句,这意味着直接编写标题而不是将其赋值给变量,$t=the_title(); 是无效的。如果您使用get_the_title,则可以将其添加到特定变量中,例如:$t=get_the_title(); echo $t; - TheBosti
感谢您的时间 :) - Wordica
显示剩余4条评论

3

这个应该可以工作

echo mb_strimwidth(get_the_title(), 0, 40, '...');

尝试回答新问题。这个问题已经有一个被接受的答案了。 - Umair Farooq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接