你如何编写一个Wordpress函数来将Span放在Title的第一个单词周围?

时间:2010-08-17 21:14:52

标签: php wordpress preg-replace

我想替换标题中的第一个单词以使<span></span>在里面。

Wordpress标题示例

<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>

我想要像这样

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

功能

function span_on_title($span) {
 return preg_replace('', '', $span, 1);
}
add_filter('the_title','span_on_title');

我可以知道在preg_replace

上放什么

2 个答案:

答案 0 :(得分:2)

  $title = '<h2 class="entry-title"><a href="#">Welcome to Wordpress</a></h2>';

  $title = preg_replace('/<a([^>]+)>([a-zA-Z]+)\s/i', '<a$1><span>$2</span> ', $title);

  return $title;

答案 1 :(得分:1)

将其添加到主题中的functions.php文件中:

// Adds span around the first word of post titles
if ( ! is_admin(false) ) {
add_action('brentini_span_post_title');
function brentini_span_post_title($span_title) {
$span_title = preg_replace('/(^[A-z0-9_]+)\s/i', '<span>$1</span> ', $span_title);
return $span_title;
}
add_filter('the_title', 'brentini_span_post_title');
} 
elseif ( ! is_admin(true) ) {
remove_filter('the_title', 'brentini_span_post_title');
}

例如,前端的输出如下所示:

<h2 class="entry-title"><a href="#"><span>Welcome</span> to Wordpress</a></h2>

但在查看帖子表时,后端不会受到影响。

然后你可以在你的style.css中设置样式,例如:

h2.entry-title span {color:#0531C2}

编辑:添加if else语句,仅在不调整后端主题的情况下调整前端主题的格式。似乎工作得很好。如果有更好的方法,我很乐意听到它,谢谢!