2

我正在尝试将 wordpress 标题缩短为第一个单词。对于名为“John Doe”的页面,我希望在页面的某处有一个子标题,上面写着“About John”,所以我只想从标题中获取第一个单词。

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

谢谢!

更新:
感谢您的回答!我尝试了以下代码,但它似乎不起作用。它仍然与完整的标题相呼应。有什么建议么?

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

7 回答 7

10

这很容易:

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

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

希望这会有所帮助:)

于 2010-04-17T18:57:52.697 回答
5
$first_word = current(explode(' ', $title  ));

或在您的模板文件中

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

按空间爆炸并获得结果数组中的第一个元素

于 2010-04-17T18:14:16.050 回答
2
list($first_word) = explode(' ',$mystring);
于 2010-04-17T18:15:32.200 回答
0

你可以这样做:

$words = explode(' ', $the_title_here);
echo $words[0];
于 2010-04-17T18:15:48.657 回答
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 < 5.3,你可以使用explode()

$parts = explode(' ',$title);
echo $parts[0];
于 2010-04-17T18:44:42.650 回答
0

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

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

有关更多详细信息和示例,请参阅strtok PHP 手册页

于 2014-02-05T05:46:15.127 回答
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>";
?>

有关法典的更多详细信息。

于 2010-04-18T21:31:11.447 回答