Как вы пишете функцию Wordpress, чтобы поместить Span вокруг первого слова заголовка? - PullRequest
4 голосов
/ 18 августа 2010

Я хочу заменить первое слово в заголовке, чтобы оно содержало <span></span> внутри.

Пример для Wordpress title

<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 ]

2 голосов
/ 18 августа 2010
  $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 голос
/ 27 февраля 2012

Добавьте это в ваш файл 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 для настройки форматирования только для темы внешнего интерфейса без настройки темы внутреннего интерфейса.Кажется, работает просто отлично.Если есть лучший способ, я хотел бы услышать это, спасибо!

...