Получить первое слово в строке php the_title WordPress

Я пытаюсь сократить заголовок WordPress до первого слова. Для страницы с именем «Джон Доу» я хочу, чтобы где-то на странице был подзаголовок с надписью «О Джоне», поэтому я хочу просто получить первое слово из заголовка.

Есть ли способ сделать это с помощью PHP?

Спасибо!

ОБНОВЛЕНИЕ:
Спасибо за ответы! Я попробовал следующий код, но, похоже, он не работает. Это все еще перекликается с полным названием. Какие-либо предложения?

<?php   
   $title = the_title();
   $names = explode(' ', $title);
   echo $names[0];
?>

person HandiworkNYC.com    schedule 17.04.2010    source источник


Ответы (7)


это очень легко:

<?php
$title = get_the_title(); // This must be!, because this is the return - the_title would be echo
$title_array = explode(' ', $title);
$first_word = $title_array[0];

echo $first_word;
?>

or

<?php
$title = current(explode(' ', get_the_title()));

echo $title;
?>

не проверено, но должно работать :)

Надеюсь, это полезно :)

person ahmet2106    schedule 17.04.2010
comment
Спасибо! Работает идеально! Ключевым моментом здесь является использование get_the_title, the_title для этой цели не подойдет. - person HandiworkNYC.com; 19.04.2010

$first_word = current(explode(' ', $title  ));

или в вашем файле шаблона

<?php echo current(explode(' ', $title  )) ?>

взорвать по пробелу и получить первый элемент в результирующем массиве

person Galen    schedule 17.04.2010
comment
@Galen: +1 за использование current :) - person Sarfraz; 17.04.2010

Вы можете сделать так:

$words = explode(' ', $the_title_here);
echo $words[0];
person Sarfraz    schedule 17.04.2010

Я думаю, вы, вероятно, столкнулись с некоторыми особенностями Wordpress здесь. the_title() по умолчанию просто печатает заголовок и ничего не возвращает. Чтобы он возвращал строку заголовка, а не печатал ее, вы должны установить третий параметр the_title() в значение true.

//fetch the title string into a variable
$title = the_title('','',true);

Как только вы это сделаете, вы можете избавиться от первого слова и повторить его вручную. Если вы используете PHP 5.3, вы можете сделать это в одной строке с помощью strstr():

echo strstr($title," ",true);

Если у вас PHP ‹ 5.3, вы можете использовать explode():

$parts = explode(' ',$title);
echo $parts[0];
person zombat    schedule 17.04.2010
comment
Или вы можете использовать strtok($title, ' ') - person salathe; 18.04.2010

Я бы порекомендовал полностью отказаться от синтаксического анализа строк и использовать более общий подход для определения вторичного заголовка для вашей страницы.

Вы должны использовать систему WordPress Post Meta, чтобы определить пользовательское мета-поле с именем, например «подзаголовок», а затем вызвать это поле в своем шаблоне. Таким образом, вы можете решать постранично, какими должны быть подзаголовки, а не ограничиваться определенными отношениями между заголовком сообщения и подзаголовком. Возможно, это не усложнит вам жизнь, а значительно упростит ее.

Вы добавляете метаданные сообщения на страницу или в сообщение, используя раздел «Пользовательские поля» в нижней части экрана редактирования сообщения. Вы отображаете эти поля в своей теме следующим образом:

<?php echo get_post_meta($post->ID, $meta_key, 1);?>

Очевидно, вам, вероятно, лучше сначала проверить, что он существует, что даст вам что-то вроде этого:

<?php if ( $subtitle = get_post_meta($post->ID, $meta_key, 1) ) 
    echo "<h3>$subtitle</h3>";
?>

Подробнее о кодексе.

person jerclarke    schedule 18.04.2010
comment
Я забыл упомянуть, что это страница для клиента. Если есть что-то, что ненавидит этот клиент, так это то, что он несет ответственность за определение дополнительных параметров в админке. Разбор строки позволяет мне НЕ заставлять его вводить дополнительную информацию. Подзаголовок предназначен только для одной страницы и всегда работает одинаково. Если заголовок страницы — «Джон Доу», то подзаголовок будет «О Джоне». В любом случае, проблема решена — спасибо за помощь! - person HandiworkNYC.com; 19.04.2010

Существует строковая функция (strtok), которую можно использовать для разделения строки на более мелкие строки (токены< /em>) на основе некоторых разделителей. Для целей этой темы первое слово (определяемое как любое перед первым пробелом) Test me more может быть получено путем маркировки строки пробелом.

<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>

Дополнительные сведения и примеры см. на странице руководства strtok PHP.

person Krunal Shah    schedule 05.02.2014

person    schedule
comment
добавление trim() делает его более надежным. - person Alexar; 18.04.2010