2013-02-22 33 views
0

我一直在努力與此一段時間了。PHP的glob()打破WordPress的子頁面

我有一個使用jQuery循環插件運行的圖片庫,並使用PHP glob()從文件夾中拉取文件。問題是,當我導航到另一個頁面時,由於在文件路徑開始處添加了新頁面的URL,圖庫會中斷。

例子:

頭版網址:http://localhost/project/image-display-images/image.jpg

其他網頁網址:http://localhost/**NEWPAGE**/project/image-display-images/image.jpg

這裏是我的代碼:

$files = glob('image-display-images/*.*'); 

     for ($i=1; $i<count($files); $i++) 

     { 
      $num = $files[$i]; 
      echo '<img src="'.$num.'"'.' alt="Campus Images" width="362" height="246"/>'; 
     } 

這將產生對jQuery的週期,以圖像的列表滾動瀏覽。它只能在首頁上工作。

任何想法?

已解決!

這是我的新代碼:

$files = glob(ABSPATH.'/image-display-images/*.*'); 

foreach ($files as $f) { 
    echo '<image src="'.home_url(str_replace(ABSPATH,'',$f)).'"alt="Campus Images" width="362" height="246"/>'; 

} 

這適用於所有網頁。

謝謝!

+0

如果圖像 - 顯示圖像是所有文章的唯一文件夾,請嘗試將絕對路徑傳遞給glob函數。 – Ateszki 2013-02-22 15:48:21

回答

1

使用絕對路徑:

$files = glob(ABSPATH.'image-display-images/*.*'); 

WordPress的核心設置ABSPATH恆所以它應該是相當可靠的。

glob處理文件系統路徑,但您嘗試加載URL。要按照您嘗試的方式顯示文件,您需要將結果轉換爲網址。這是一個簡單的例子。

$files = glob(ABSPATH."*.*"); 
foreach ($files as $f) { 
    echo home_url(str_replace(ABSPATH,'',$f)); 
} 

您可能更好寫你自己的功能,抓住你的文件名,而不是取決於glob這的確有關於不被使用在某些系統上的警告。請參閱:http://codex.wordpress.org/Filesystem_API

+0

這實際上給了我兩個頁面上的正確路徑,但圖像不顯示。這是最接近我來得到這個正常工作。 '$ files = glob(ABSPATH.'image-display-images /*.*');' 更正:它將頁面url綁定到圖片鏈接,雖然它顯示爲正確的鏈接。 似乎我需要以某種方式刪除圖像鏈接的頁面url的添加。嗯.. – user2099954 2013-02-22 16:37:28

+0

看我的編輯。另外,不要在WordPress中使用相對URL。他們是不斷痛苦的源泉。始終創建一個完整的路徑。 – 2013-02-22 16:49:41

+0

謝謝!我會試試看看我能得到什麼。 – user2099954 2013-02-22 16:51:18

0

定義您的畫廊,而不是'image-display-images/*.*' 的完整路徑,例如glob('/var/etc/www/image-display-images/*.*')

+0

我試過這個,但沒有正面結果。這導致什麼都沒有顯示出來。 – user2099954 2013-02-22 16:35:31