2014-10-31 76 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