【发布时间】:2018-12-04 18:23:48
【问题描述】:
我在我们的 WordPress 主题模板中使用此代码来显示上一篇似乎有效的帖子:previous_post_link('%link', '%title', true);
但是,%title 的内容包含了每篇文章的整个标题,很长,而且会打乱主题格式。
有没有办法修改 %title 的输出限制为 20 个字符?
【问题讨论】:
标签: php wordpress wordpress-theming
我在我们的 WordPress 主题模板中使用此代码来显示上一篇似乎有效的帖子:previous_post_link('%link', '%title', true);
但是,%title 的内容包含了每篇文章的整个标题,很长,而且会打乱主题格式。
有没有办法修改 %title 的输出限制为 20 个字符?
【问题讨论】:
标签: php wordpress wordpress-theming
试试这个:
function modify_title_previous_post_link($link) {
preg_match('~>\K[^<>]*(?=<)~', $link, $match);
$title=$match[0];
$title = substr($title,0,20);
$title.="...";
$link=preg_replace('/<a(.+?)>.+?<\/a>/i',"<a$1>$title</a>",$link);
return $link;
}
add_filter('previous_post_link','modify_title_previous_post_link');
【讨论】:
我不喜欢 preg_match 方法。
您是否有理由必须将'%title' 传递给previous_post_link? Wordpress 函数只是对其进行文本替换,它并不是一个复杂的宏或任何东西。
我会做更多类似的事情
$prev_title = $get_previous_post()->post_title;
if (strlen($prev_title) > 20)
$prev_title = substr($prev_title , 0, 20) . '...';
previous_post_link('%link', $prev_title, true);
(我是 PHP 新手,所以可能有些语法错误,但这是基本思想)
【讨论】: