在previous_post_link中更改Wordpress%标题变量输出

时间:2017-09-02 15:27:39

标签: php wordpress wordpress-theming

我在WordPress主题模板中使用此代码来显示上一篇似乎有效的帖子:previous_post_link('%link', '%title', true);

然而,%title的内容包括每个帖子的整个标题,这个标题很长并且会混淆主题格式。

有没有办法将%title的输出修改为限制为20个字符?

2 个答案:

答案 0 :(得分:1)

试试这个:

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');

我对正则表达式不太好,所以我使用this回答 preg_match this回答 preg_replace

答案 1 :(得分:0)

我不喜欢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的新手,所以我可能在语法上有误,但这是基本思想)