2014-10-31 82 views
2

我試圖抓取從WordPress上傳的音頻文件,但有一些問題。我需要獲取不包含域名的補丁,比如wp-content/uploads/2014/09/file.mp3獲取附件URL

我試着用get_attached_media(),我可以看到我需要什麼,當我var_dump()它被存儲在一個數組中,密鑰爲​​。我嘗試了幾種不同的方法,但無法訪問它。這是結果。

object(WP_Post)#2059 (24) { 
["ID"]=> 
int(4312) 
["post_author"]=> 
string(1) "3" 
["post_date"]=> 
string(19) "2014-10-06 15:33:16" 
["post_parent"]=> 
int(4298) 
["guid"]=> 
string(73) "/wp-content/uploads/2014/09/file.mp3" 

} 
} 

我刪除了大部分代碼以保持簡短。我怎樣才能訪問​​密鑰?我將結果存儲在$a並嘗試$a->guid$a['guid']$a->post->guid等,但沒有運氣。

任何幫助將不勝感激。

+0

你嘗試類似'$ A [0] - > guid;'其中0是數組元素的索引? – pbaldauf 2014-10-31 18:06:36

+0

如果'$ a'是你var_dumped的對象,那麼'$ a-> guid'應該已經工作了。我猜你錯過了那裏的一些東西。而且,guid字段在所有情況下都不可靠。我會使用'get_permalink'來代替,然後提取所需的部分路徑。 – MSTannu 2014-10-31 18:07:41

+0

檢查:http://wordpress.stackexchange.com/questions/110785/getting-a-specific-value-out-of-array-using-get-attached-media – jeroen 2014-10-31 18:08:07

回答

3

如果您查看get_attached_media函數的文檔,您會看到它返回一個包含WP_Post對象的數組。

該數組通過附件標識索引,因此您無法簡單地通過執行$a[0]訪問第一個元素。我建議你重新索引陣列使用它,就像在此之前:

$a = get_attached_media(...); 
$a = array_values($a); 
echo 'GUID: ' . $a[0]->guid; 

你也可以遍歷所有的附件,這樣

foreach ($a as $attachment) { 
    echo "GUID: {$attachment->guid}\n";  
} 
+0

我也試過。我得到一個null值。 – 2014-10-31 18:13:44

+0

哇!它只在foreach循環內有效。謝謝! – 2014-10-31 18:16:22

+0

@JuanRangel我已經更新了答案,以顯示如何做到這一點的foreach循環之外工作 – codeaken 2014-10-31 18:25:24