Пересмотренная функция WordPress, чтобы помещать Span вокруг первого слова Title?

Я пытаюсь использовать функцию, которая добавляет «span» вокруг первого слова каждого заголовка сообщения на сайте WordPress и находит этот чрезвычайно похожий вопрос. Функция во втором ответе отлично работает, когда есть ссылка внутри элемента H2.

Но на моем сайте я не использую заголовок сообщения как ссылку, поэтому найденное решение не работает. Я попытался придумать новый шаблон preg-replace, чтобы пропустить обнаружение части ссылки, но не смог ее получить.

В принципе, я хочу это:

<h2><?php the_title(); ?></h2> or <h2>Converted post title</h2> 

… чтобы стать следующим:

 <h2><span>Converted</span> post title</h2> 

Лучший способ сделать это с помощью деревянных крючков и фильтра. так что вы можете использовать функцию the_title () без дополнительного кода.

поместите этот код в functions.php в папку темы. это все.


function add_label_to_post_title( $title = '' ) { if(trim($title) != "") { $ARR_title = explode(" ", $title); if(sizeof($ARR_title) > 1 ) { $first_word = "<span>".$ARR_title['0']."<span>"; unset($ARR_title['0']); return $first_word. implode(" ", $ARR_title); } else { return "<span>{$title}</span>"; } } return $title; } add_filter( 'the_title', 'add_label_to_post_title' ); с function add_label_to_post_title( $title = '' ) { if(trim($title) != "") { $ARR_title = explode(" ", $title); if(sizeof($ARR_title) > 1 ) { $first_word = "<span>".$ARR_title['0']."<span>"; unset($ARR_title['0']); return $first_word. implode(" ", $ARR_title); } else { return "<span>{$title}</span>"; } } return $title; } add_filter( 'the_title', 'add_label_to_post_title' );

Вы можете использовать что-то вроде этого:

 <?php $title = get_the_title(); if(substr($title,0)>-1){ $first_word = substr($title,0,strpos($title," ")); $after_that = substr($title,strpos($title," ")+1); }else{ $first_word = $title; $after_that = ""; } echo "<span>".$first_word."</span> " . $after_that; ?> 

Я предлагаю вам сделать это в javascript, чтобы вы могли уменьшить использование процессора / процессора на сервере. У вас все равно будет такой же результат.

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" type="text/javascript"></script> <script type="text/javascript"> $(function() { $('h2.title').each( function (){ var obj_h2 = $(this); var h2_title = obj_h2.html(); var words = h2_title.split(' '); words[0] = '<span>' + words[0] + '</span>' obj_h2.html( words.join( ' ' ) ); } ); }); </script> 

https://gist.github.com/2440296#file_h2_span1stw_2.htm

* Предыдущая версия кода .. https://gist.github.com/2440296#file_h2_span1stw.htm http://jsbin.com/uguhel/edit#htmlllive