2010-04-17 187 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

相關問題