2015-10-13 159 views
0

首先:它甚至有可能嗎?如何修改wordpress上的the_post_thumbnail函數?

我想要一個函數,返回一個srcset <img>標籤,使我的wordpress佈局響應。這對我來說很重要,因爲我的包裝寬度爲1400,這對於寬度大於1400 @ 1或700 @ 2的屏幕很適用,但對於手機來說太寬了,對於@ 2和甚至@ 3屏幕,720px的寬度就足夠了因爲他們可以變得更清晰但眼睛不會注意太多)。

問題是我無法知道在處理php時要提供哪個縮略圖大小......所以我想用srcset。要做到這一點,我知道我必須在functions.php上寫點東西。但是我應該怎麼做?我應該修改the_post_thumbnail()函數嗎?或者我應該創建一個新的?在這種情況下,如何從不同大小的發佈縮略圖中獲取不同的圖像名稱?

+0

我想你可以添加一個'post_thumbnail_html'過濾器並返回你喜歡的任何東西來替換'the_post_thumbnail'輸出的內容。可能會給你一個乾淨的做法,或者至少是搜索例子的東西......(該過濾器通過附件ID,然後你可以使用'wp_get_attachment_image_src'來獲取各種不同大小的圖像'src'在你的'srcset'中使用。) –

回答

0

您可以使用WP wp_get_attachment_image_src()get_post_thumbnail_id()函數來創建自己的<img>標籤:

global $post; 
$url1 = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail'); 
$url2 = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium'); 
<img src="<?php echo $url1[0]; ?>" srcset="<?php echo $url2[0]; ?> 500w" alt="alt-text" /> 

其中,「縮略圖」和「中等」是圖像尺寸名稱。例如,默認的WordPress大小是縮略圖,中等,大和全。您的主題可以聲明更多尺寸。

如果你在循環中,你不需要聲明de global $post

+0

$ size應該包含什麼? 720,720w,720px,720x480 ...? – Vandervals

+0

對不起,我給你錯誤的代碼,我編輯了我的答案,還包括有關大小參數的解釋。 – ThemesCreator

+0

我是否可以將這些代碼從functions.php文件中的單個函數中重新組合? – Vandervals

0

您可以使用過濾器來修改the_post_thumbnail函數。

使用下面的過濾器來修改由the_post_thumbnail函數生成的輸出。

  add_filter('post_thumbnail_html', 'your_function', 10, 6);