我正在尝试将wordpress标题缩短为第一个单词。对于名为“John Doe”的页面,我想在页面的某处显示一个“关于约翰”的子标题,所以我想从标题中获取第一个单词。
有没有办法用PHP做到这一点?
谢谢!
更新
谢谢你的回答!我尝试了以下代码但它似乎没有工作。它仍然与完整的标题相呼应。有什么建议吗?
<?php
$title = the_title();
$names = explode(' ', $title);
echo $names[0];
?>
答案 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;
?>
未经测试,但应该有效:)
希望这有用:)
答案 1 :(得分:5)
$first_word = current(explode(' ', $title ));
或在您的模板文件中
<?php echo current(explode(' ', $title )) ?>
按空间爆炸并获得结果数组中的第一个元素
答案 2 :(得分:2)
list($first_word) = explode(' ',$mystring);
答案 3 :(得分:0)
你可以这样做:
$words = explode(' ', $the_title_here);
echo $words[0];
答案 4 :(得分:0)
我想你可能会遇到一些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&lt; 5.3,您可以使用explode()
:
$parts = explode(' ',$title);
echo $parts[0];
答案 5 :(得分: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>";
?>
答案 6 :(得分:0)
有一个字符串函数(strtok)可用于根据某些分隔符将字符串拆分为较小的字符串( tokens )。出于此线程的目的,Test me more
的第一个单词(定义为第一个空格字符之前的任何单词)可以通过标记空格字符上的字符串来获得。
<?php
$value = "Test me more";
echo strtok($value, " "); // Test
?>
有关详细信息和示例,请参阅strtok PHP manual page。