2010-04-17 192 views
2

我试图缩短wordpress标题到第一个单词。对于名为“John Doe”的页面,我想在页面上的某个地方添加一个名为“About John”的子标题,因此我只想从标题中获得第一个词。获取字符串中的第一个字php the_title WordPress

有没有办法用PHP来做到这一点?

谢谢!

更新:
感谢您的回答!我尝试了下面的代码,但它似乎并没有工作。它仍然呼应完整的标题。有什么建议么?

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

回答

8

这是很容易的:

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

未经测试,但应该工作:)

希望这是有益:)

+2

谢谢!完美的作品!这里的关键是使用get_the_title,the_title不适用于此目的。 – 2010-04-19 13:05:51

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

或在你的模板文件

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

通过空间爆炸,并获得第一个元素,导致阵列

+1

@Galen:+1使用'current' :) – Sarfraz 2010-04-17 18:45:00

+0

+1给我一个+1! – Galen 2010-04-17 20:08:21

1
list($first_word) = explode(' ',$mystring); 
+0

+1教我关于'list()'。 – 2010-04-17 18:25:07

+0

添加trim()使其更可靠。 – Alexar 2010-04-17 20:03:39

0

你可以这样做:

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

我想你可能在这里遇到了WordPress的一些特质。 the_title(),默认情况下,只打印出标题并不返回任何内容。为了使其返回标题字符串而不是打印它,必须将第三个参数the_title()设置为true。

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

一旦你有了它,你可以摆脱第一个字,并手动回显它。如果你使用PHP 5.3,你可以在一个符合strstr()做到这一点:如果你有PHP < 5.3

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

,您可以使用explode()

$parts = explode(' ',$title); 
echo $parts[0]; 
+0

或者,您可以使用'strtok($ title,'')' – salathe 2010-04-17 20:27:05

0

我会建议避免此字符串完全解析,并使用较普遍的办法来定义你的页面的副标题。

您应该使用WordPress'Post Meta系统来定义一个名为'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>"; 
?> 

More details on the codex.

+0

我忘了提及这是一个客户页面。如果客户讨厌一件事,它有责任在管理员中定义更多参数。字符串解析使得我不必让他填写额外的信息。字幕仅用于一页,并始终以相同的方式工作。如果页面的标题是John Doe,那么字幕将显示“About John”。无论如何,这个问题是所有照顾 - 感谢您的帮助! – 2010-04-19 12:57:38

0

有一个字符串函数(strtok),可用于基于某些分隔符将字符串拆分为更小的字符串(令牌)。对于此线程而言,Test me more的第一个单词(定义为第一个空格字符之前的任何内容)可以通过标记获得空格字符上的字符串。

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

有关更多详细信息和示例,请参阅strtok PHP manual page

相关问题