2012-12-12 45 views
5

我希望有人能夠幫助我解決問題。我正在爲我的一位朋友建立一個新聞網站。該網站開始走到一起,但我無法找到如何爲特色圖片添加標題。我今天一直在瀏覽網頁,有很多方法可以通過向php表單添加代碼來實現,但我不確定我在做什麼。如何在WordPress中添加精選圖片標題

我已經將這樣的代碼添加到了functions.php代碼中,但是一切都會成對形狀。

我保持我的手指交叉,有人可以通過鍵入我通過做什麼來幫助我。

非常感謝您的幫助。

親切的問候

約翰

+0

你是什麼意思的「精選圖像」?你的意思是你想要某些圖像有標題和其他的不是?解釋你想要顯示圖像,標題等的上下文。 – barakadam

+1

精選圖像對於每個帖子和頁面都有其自己的上傳點,並且其被稱爲「精選圖像」。所以我會認爲這就是他正在談論的。快速Google搜索提供了一個簡單的解決方案,我會在下面發佈。 – AndyWarren

回答

9

首先,你需要在你的functions.php文件拖放到下面的代碼:

function the_post_thumbnail_caption() { 
    global $post; 

    $thumbnail_id = get_post_thumbnail_id($post->ID); 
    $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment')); 

    if ($thumbnail_image && isset($thumbnail_image[0])) { 
    echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>'; 
    } 
} 

在閉幕PHP tag之前貼吧文件,如果沒有關閉PHP標記,請確保在粘貼的代碼下面沒有空行,因爲這可能會導致問題。

然後,您希望的標題來顯示,你需要用這個來稱呼它:

<?php the_post_thumbnail_caption(); ?>

如果您不確定應該將通話在你的模板文件,你需要找到<?php the_post_thumbnail(); ?>被調用的地方。只需在模板文件中查找該行,然後將函數調用放置在附近,以便在其中顯示標題。該函數自動將標題封裝在span標籤中,以便您可以使用CSS進行定位,但也可以將函數調用包裝到您想要的任何標籤中。

因此,舉例來說,如果你的模板文件調用這個什麼非常相似的功能的圖像:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 

你想要的標題呼叫添加到它是這樣的:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 
<?php the_post_thumbnail_caption(); ?> 

讓我知道你是否需要任何其他的澄清。

+0

嗨,安迪,謝謝你花時間幫助我。我正在使用一個稱爲Ultimatum的非常好的主題構建器,請參閱以下鏈接。 http://ultimatumtheme.com/我今天早上看過所有的文件夾,但找不到你提到的php文件。所以我複製了你的文章並記入了你,並將它發佈在Ultimatum論壇上,希望有人會告訴我我需要在記事本++中打開哪個文件並添加到該文件中。 – TLCJohn

+0

沒問題,希望它有幫助。一旦你明白了,請在這裏接受我的回答,如果這是你正在尋找的。我去了你提供的鏈接,並要下載一個副本,所以我可以找到正確的文件給你,但它是一個相當昂貴的工具。它會出現它的某種前端拖放生成器?所以它可能有更多的代碼和文件是典型的WordPress主題。 – AndyWarren

-1
the_post_thumbnail();     // without parameter -> Thumbnail 

the_post_thumbnail('thumbnail');  // Thumbnail (default 150px x 150px max) 
the_post_thumbnail('medium');   // Medium resolution (default 300px x 300px max) 
the_post_thumbnail('large');   // Large resolution (default 640px x 640px max) 
the_post_thumbnail('full');   // Original image resolution (unmodified) 

the_post_thumbnail(array(100,100)); // Other resolutions 
+2

你應該刪除這個答案。這是完全不正確的,你可能會被低估。 –

0

我知道這是一個老問題,但我想提供另一種解決方案,其他人可能更喜歡,如果你寧願與已經可用的數據處理(減少數據庫調用),而使用的WordPress已經可用字段。

由於get_the_post_thumbnail()的輸出將整個img標籤作爲一個字符串返回,並且字幕字段中預先填充了alt標籤,您可以使用xml解析器或正則表達式簡單地提取圖像標籤的alt標籤。

我這樣做:

<?php 
    if ($featured = get_the_post_thumbnail(get_the_ID())): 

     echo $featured; 
     preg_match('/alt="(.*)"/i', $featured, $caption); 

     if ($caption) { 
      echo wpautop(array_pop($caption)); 
     } 
    endif; 
    ?> 

如果你想讓它像最初接受的答案的功能,你img標籤直接傳遞到你的函數:

function get_the_post_thumbnail_caption($img_tag) { 
     preg_match('/alt="(.*)"/i', $img_tag, $caption); 
     return array_pop($caption); 
    } 

而且在模板:

$img = get_the_post_thumbnail(get_the_ID()); // or any id 
    echo wpautop(get_the_post_thumbnail_caption($img)); 

請注意,如果您填充'替代文字'字段,它將覆蓋字幕字段數據輸出img標籤時。如有必要,您可以使用過濾器覆蓋該行爲。

+0

還有一件事:您可以通過使用'preg_match_all'函數和'/(alt)title|src)="(.*)"/i'這樣的模式來擴展正則表達式以包含其他標記。 – Scorpius

相關問題