2016-12-01 116 views
0

我已經上傳圖像到我的主題文件夾內的一個目錄,並試圖使用file_exists輸出圖像。Wordpress的file_exists功能替代

並非我所有的帖子都有圖片,所以我使用file_exists函數。

我沒有得到預期的結果,並且希望對此問題有所瞭解。

$preGetImage = get_template_directory_uri();                     
    $vendorPhotoLogo = $preGetImage."/img/vendorimages/logo-".$vendor->acctno.".png"; 
    $vendorPhotoImg = $preGetImage."/img/vendorimages/img-".$vendor->acctno.".png"; 

    if(file_exists($vendorPhotoImg)){ 
     echo '<img src="'.$vendorPhotoImg.'"/>'; 
    } 

    if(file_exists($vendorPhotoLogo)){ 
     echo '<img src="'.$vendorPhotoLogo.'"/>'; 
    } 
+1

你能澄清哪些輸入觸發了什麼結果嗎?您是否看到所有圖像標記,沒有圖像標記等等。 –

+1

嘗試使用'get_template_directory()'而不是'get_template_directory_uri()' – Dre

+1

要添加到@Dre所說的內容 - 不能依賴於檢查文件是否存在這個URI,你需要使用文件路徑 - 這就是'get_template_directory()'將會得到的。 –

回答

1

讓我解釋來幫助你:

file_exists()在服務器端運行,看是否有文件服務器的硬盤上的存在。由於它在服務器端運行,因此需要通過文件所在文件夾的絕對路徑進行檢查。

陪着我....

當你如果指定的文件服務器的硬盤驅動器上存在運行if(file_exists($vendorPhotoImg)),PHP檢查。如果是,那麼它將在代碼塊內運行代碼,即將HTML呈現給瀏覽器。

要檢查文件是否存在,必須使用服務器硬盤驅動器位置的絕對路徑。您使用get_template_directory()來獲取主題的文件夾路徑。

但是等待,您需要指向前端圖像位置的URL路徑。獲取圖像URI的絕對路徑,get_template_directory_uri()

這裏有您需要的代碼:

$theme_directory = get_template_directory(); 
$theme_uri  = get_template_directory_uri(); 

$vendorPhotoLogo = '/img/vendorimages/logo-' . $vendor->acctno . '.png'; 
$vendorPhotoImg = '/img/vendorimages/img-' . $vendor->acctno . '.png'; 


if (file_exists($theme_directory . $vendorPhotoImg)) { 
    printf('<img src="%s"/>', esc_url($theme_uri . $vendorPhotoImg)); 
} 

if (file_exists($theme_directory . $vendorPhotoImg)) { 
    printf('<img src="%s"/>', esc_url($theme_uri . $vendorPhotoLogo)); 
} 

注意的file_exists()如何使用主題目錄和img源使用URI。

一種你幾個注意事項:

  1. 代碼使用esc_url()它發送到瀏覽器之前消毒的URL。
  2. 我更喜歡printf()這個邊緣情況下回聲和連接字符串。你可以在這裏使用你想要的。
+0

真棒這工作。感謝您的詳細解釋。 :) – user2120881