Intereting Posts
Поддерживает ли WordPress короткий код, вызывающий себя из-за короткого вызова? Как публиковать страницу, которая не может быть обнаружена поисковыми системами? Можно ли добавить ссылки следующей и предыдущей категории? Удалить верхний и нижний колонтитулы в iframe Как переставить пул сообщений, соединенных двумя запросами? Обрезанная фатальная ошибка при обновлении 3.6 обнаруживать, когда пользовательский пост создается в первый раз Предотвратить личное сообщение 404 Крючок перед вставкой пользователя в базу данных Как сделать следующую и предыдущую прикрепленную навигацию на странице вложений? Темы по умолчанию стили переопределяют собственный CSS-код плагина Использование wp_set_auth_cookie для пользовательской учетной системы пользователя Уточнить результаты поиска Как настроить ссылку при нажатии на прикрепленное изображение? Перезапись WordPress

Как разделить the_title и вставить тег span

Мои заголовки, на сайте, будут следовать этой теме в теге h1:

Заголовок основного заголовка / текст подзаголовка

Я пытаюсь обернуть тег span вокруг всего текста после и включая «/», поэтому моя разметка будет выглядеть так:

<h1>Main title heading <span>/ Sub-title text</span></h1> 

Как это сделать? Я не очень хорош с PHP, но я пробовал играть с взрывом, но не могу получить конечный результат, все, что я делаю, скрывает все после «/»

EDIT: Код удален и Pastebin создан, это вся моя страница для index.php: http://pastebin.com/0T9mt7Fu

лучше всего, если вы просто используете настраиваемый тип поля для создания субзаголовка …
Таким образом вы оставляете заголовок не затронутым и просто добавляете поле, в которое вы можете вставить такое значение (вызывать заголовок поля):

введите описание изображения здесь


Затем вы можете легко получить свои субтитры:

 <?php $sub_title=get_post_meta($post->ID,'subtitle',true); if($sub_title != '') { echo '<h1>'. the_title() .'<span>'. $sub_title .'</span></h1>'; } else { echo '<h1>'. the_title() .'</h1>'; } ?> 

,
Я надеюсь, что это подходящее решение для вас … Я использую его в случаях

Приветствия, Sagive


КАК:

Замените (я надеюсь, что он будет выглядеть одинаково в вашей теме) с кодом выше ..:

 <h1><?php the_title(); ?></h1> 

Это немного поздно, но я не знаю, где еще это будет иметь смысл. У меня была аналогичная проблема и я создал решение.

Как указывал toscho, the_title также используется в навигационных меню. Он создал фильтр, чтобы включить / выключить фильтр заголовков для навигационных меню, что я лично считаю Einsteinesque. (Огромное спасибо!)

Поэтому я немного изменил свой фильтр, чтобы он работал здесь. Затем добавлена ​​фактическая функция фильтрации. Где бы вы ни использовали space-pipe-space ("|") в поле заголовка сообщения, часть после того, как она была обернута в <span> (включая косую черту, которую попросил исходный автор сообщения).

 /** * Append a sub-heading to WordPress post titles */ add_filter( 'wp_nav_menu_args', 'gp121028_title_filter_switch' ); add_filter( 'wp_nav_menu', 'gp121028_title_filter_switch' ); /** * Switch title filter off when menu class starts and on when it ends. * * @param mixed $input Array or string, we just pass it through. * @return mixed */ function gp121028_title_filter_switch( $input ) { $func = 'wp_nav_menu_args' == current_filter() ? 'remove_filter' : 'add_filter'; $func( 'the_title', 'gp121028_filter_title' ); return $input; } /** * The actual filter function for the_title() */ function gp121028_filter_title( $title ) { $substrings = explode( ' | ', $title ); $title = ( ! empty( $substrings[0] ) ) ? $substrings[0] . '<span>/' . $substrings[1] . '</span>' : $title; return $title; } 

Надеюсь, это поможет кому-то!

Я думаю, что ответ @Sagive SEO дал, как лучший подход с семантической точки зрения. Но если вы предпочитаете хранить оба заголовка в поле заголовка, для вас должен работать простой взрыв.

Попробуйте что-то вроде этого:

 add_filter( 'the_title', 'wpse45589_split_title', 10, 2 ); function wpse45589_split_title( $title, $post_id = null ) { if ( !$post_id ) return $title; $post = get_post( $post_id ); if ( $post->post_type !== 'page' ) return $title; $parts = explode( '/', $title, 2 ); $title_to_return = $parts[0]; if ( !empty( $parts[1] ) ) $title_to_return .= '<span>/'.$parts[1].'</span>'; return $title_to_return; } 

ETA: следующее предложение @ toscho ниже, я добавил пару строк, чтобы проверить тип сообщения, прежде чем фильтровать заголовок. Эта функция теперь должна добавлять только <span> к заголовку на страницах, а не в навигационных меню и т. Д.