簡體   English   中英

如何打開服務器上另一個目錄中的imgs文件?

[英]How do I open imgs file located in another directory on my server?

我在Stackoverflow,PHP和WP主題制作方面還很新,我面臨以下問題:我正在博客首頁(位於主題目錄中的home.php中)上開發圖像輪播。檢索不同目錄( /wordpress/wp-content/uploads/HP/carousel )上的圖像,因為出於最終用戶的緣故,我使用的是Max Foundry的Wordpress媒體庫文件夾( https://it.wordpress.org/插件/ media-library-plus / )為輪播創建特定的文件夾,以簡化最終用戶上載輪播的過程。

我嘗試將PHP函數opendir()scandir()glob() scandir()一起使用,並且如果該目錄位於主題目錄的同一目錄中,則它可以正常工作,但是我的客戶端應該使用FTP和Filezilla之類的東西,但我不想讓他玩可能會破壞我工作的工具。 因此,我在網上尋找了另一種解決方案:我發現我應該使用ABSPATH或idk之類的東西,根本無法使用,它不能將字符串識別為路徑。 我還嘗試了WP函數get_site_url() ,該函數在頁面的另一部分中也用於類似目的,但是在這里它不起作用。

$dir = get_site_url().'/wp-content/uploads/HP/carousel/';

if (is_dir($dir)) //testing if it's a directory
  printf($dir);
else {
  echo 'not a directory';
}

使用ABSPATH結果相同。 然后很奇怪,如果我嘗試使用opendir打開目錄,則會返回錯誤。

我仍在學習,找不到很好的參考資料來解釋此函數和全局變量的工作原理,所以我想我缺少了一些東西。 我希望我的代碼打開另一個本地目錄,因為它位於同一服務器上的另一個目錄中,特別是在其中構建主題的目錄中。 真的感謝您的寶貴時間和最終的幫助。

編輯:謝謝@cptnk和@Uri Chachick,我不知道函數wp_upload_dir() ,現在將路徑識別為目錄,但是如果我嘗試使用opendir()scandir()glob()讀取其內容glob()我要放入的數組-我猜想-嘗試打印內容時結果為空。 我以為問題來自於同時使用\\/的字符串格式,所以我將所有反斜杠都變成了正斜杠,但還是一無所獲,我無法檢索目錄中的圖像(現在可以正確訪問該圖像了)。 如何獲得圖像?

我個人從未使用過媒體庫+,但據我了解,它僅增強了wordpress后端功能,並且您仍以通常的方式與附件進行交互。

這意味着您仍然可以使用https://codex.wordpress.org/Function_Reference/wp_get_attachment_url之類的函數,並在查詢附件URL后對其進行檢索。

如果您的代碼要求您找到實際路徑,則也可以使用https://developer.wordpress.org/reference/functions/wp_upload_dir/

編輯:我想我現在知道您實際上要實現的目標或問題所在。 我認為您對URL和PATH是一個誤解。

URL (統一資源定位符)不代表您的文件系統,它用於通過Web服務器(nginx,apache ...)提供資源(html,css,js,img ...)。

一個路徑表示你的計算機上的當前位置(C:\\用戶\\你\\圖片/ Home /圖片...)

服務器通常只知道路徑以及如何將它們“映射”在一起。 作為客戶端,您永遠不能看到文件路徑,而只能看到URL。 這就是為什么存在諸如wp_upload_dir和wp_get_attachment_url之類的wordpress方法的原因,因此在呈現HTML之前,您不必手動將PATH轉換為URL。

現在您可能想從插件為您創建的文件夾中檢索圖像(堆棧溢出答案: 如何在Wordpress Uploads目錄中獲取所有圖像,然后顯示所有圖像?

我個人不喜歡這種方法,原因有很多,大多數人可能會創建自定義帖子類型或使用具有選項頁功能( https://www.advancedcustomfields.com/add-ons/options-page/ )的插件(如ACF)來持久化信息。

您可以像這樣使用wp_upload_dir():

$upload_dir = wp_upload_dir();
$dir = $upload_dir['basedir'].'/HP/carousel/';

if(is_dir($dir))  //testing if it's a directory
    printf($dir);
else {
    echo 'not a directory';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM