【更改previous_post_link中的WordPress%title变量输出】我在WordPress主题模板中使用此代码来显示上一篇似乎有效的帖子:previous_post_link(‘
%link’
, ‘
%title’
, true);
但是, %title的内容包括每个帖子的整个标题, 该标题很长并且弄乱了主题格式。
有没有办法将%title的输出修改为限制为20个字符?
#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');
我对正则表达式不太满意, 所以我将这个答案用于preg_match, 并将这个答案用于preg_replace。
#2我不喜欢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的新手, 所以我可能在语法上有误, 但这是基本思想)
推荐阅读
- 使用钩子更改分类法”分层”设置
- 更改网站默认语言(WordPress)
- 将搜索结果页面更改为自定义post类型的单页
- ansible异步任务
- ansible变量注册多种方式
- Linux系统故障定位与优化
- ansible 条件,循环,roles用法简述
- jenkins之-通过API方式调用
- asible之-玩转各种循环