Получить первое слово в строке php the_title WordPress - PullRequest
2 голосов
/ 17 апреля 2010

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

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

Спасибо!

UPDATE:
Спасибо за ваши ответы! Я попробовал следующий код, но он не работает. Это все еще повторяет полное название. Есть предложения?

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

Ответы [ 7 ]

8 голосов
/ 17 апреля 2010

это очень просто:

<?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;
?>

или

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

echo $title;
?>

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

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

5 голосов
/ 17 апреля 2010
$first_word = current(explode(' ', $title  ));

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

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

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

2 голосов
/ 17 апреля 2010
list($first_word) = explode(' ',$mystring);
0 голосов
/ 05 февраля 2014

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

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

Для получения дополнительной информации и примеров см. Справочную страницу PHP strtok .

0 голосов
/ 19 апреля 2010

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

Вы должны использовать WordPress 'Post Meta system, чтобы определить пользовательское метаполе с именем типа' subtitle ', а затем вызвать это поле в вашем шаблоне. Таким образом, вы можете решать постранично, какой вы хотите, чтобы субтитр был, а не быть привязанным к определенным отношениям между заголовком поста и субтитрами. Это, вероятно, не сделает вашу жизнь более сложной и значительно упростит ее.

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

<?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>";
?>

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

0 голосов
/ 17 апреля 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, вы можете использовать <code>explode():

$parts = explode(' ',$title);
echo $parts[0];
0 голосов
/ 17 апреля 2010

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

$words = explode(' ', $the_title_here);
echo $words[0];
...