2012-12-05 92 views
0

我有這兩個功能,我在網上找到和編輯我的需要。
我想要做的是將wordpress文章的縮略圖設置爲默認的,以前設置在功能本身的圖像,或嵌入在帖子中的第一個圖像。
然而,出事了......某處如何獲取第一張圖片並將其設置爲張貼縮略圖?

wptuts_save_thumbnail($ POST_ID) - >設置後的縮略圖默認第一形象,如果它沒有設置(由筆者帖子...)!

function wptuts_save_thumbnail($post_id) { 
$post_thumbnail = get_post_meta($post_id, '_thumbnail_id', true); 

if (!wp_is_post_revision($post_id)) { // Verify that the post is not a revision 
    if (empty($post_thumbnail)) {  // Check if Thumbnail does NOT exist! 
     $firstImg = firstImg($post_id); // Get the first image of a post (if available) 
     if(!$firstImg){ // if available, update the post thumbnail 
      update_post_meta($post_id, '_thumbnail_id', 'link to default image here'); 
     } else { // else -> set thumbnail to default thumbnail 
      update_post_meta($post_id, '_thumbnail_id', $firstImg); 
     } 
    } 
} 
} 

firstImg($後_id) - >用於獲取後(按ID)的第一個圖像

function firstImg($post_id) { 
    $post = get_post($post_id); 
    $first_img = ''; 
    ob_start(); 
    ob_end_clean(); 
    $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); 
    $first_img = $matches[1][0]; 

    $urlLength = strlen(site_url()); 
    $first_img = substr($first_img, $urlLength); 

    if(empty($first_img)){ 
    return false; 
    } 

    return $first_img; 
} 

唯一的問題與這些功能是在if(!$firstImg) - else聲明。
圖像將始終設置爲默認,並且在帖子中有或沒有嵌入圖像。
$firstImg確實會返回第一張圖片(如果存在),則問題必須出現在2 if的:if(empty($first_img))if(!$firstImg)
我試圖尋找任何問題的線索,但我什麼也沒找到。

希望有人可以解決這個問題:)
在此先感謝!

附加信息:
- 兩者的功能都寫在我的主題functions.php
- wptuts_save_thumbnail($post_id)設置爲在每次發佈帖子時都會運行NEW
- 返回時,$first_img是圖片(即/wp-contents/uploads/img.jpg)或false相對路徑。

回答

1

我可以通過看代碼指出,上firstImg檢查:

if(!$firstImg){ // if available, update the post thumbnail 
    update_post_meta($post_id, '_thumbnail_id', 'link to default image here'); 
} else { // else -> set thumbnail to default thumbnail 
    update_post_meta($post_id, '_thumbnail_id', $firstImg); 
} 

似乎返回false,這將提供您的默認圖像。

您可以做的是檢查firstImg函數中dump或print_r中的$ matches [1] [0]的結果。還要檢查$ first_img在返回之前的狀態。這可以幫助您找到答案,因爲您似乎沒有在$ first_img中獲得預期結果。

希望有所幫助。

相關問題