使用PHP从PodPress获取URI

时间:2013-10-11 作者:laira1

我们使用podpress作为播客播放器,但我们希望提供在没有播放器的页面上下载文件的选项。因此,我试图找出如何从元数据中提取URI。

我是PHP新手,正在努力学习,所以我已经走到了这一步:

<?php  
    $custom_fields = get_post_custom(get_the_ID());
    $my_custom_field = $custom_fields[\'_podPressMedia\'];
    foreach ( $my_custom_field as $key => $value ){
        echo $key . " => " . $value . "<br />";
    }
?>
哪些输出

0 => a:1:{i:0;a:10:{s:3:"URI";s:85:"http://www.writingexcuses.com/wp-content/uploads/Writing_Excuses_8_1_Microcasting.mp3";s:5:"title";s:33:"Writing Excuses 8.1: Microcasting";s:4:"type";s:9:"audio_mp3";s:4:"size";i:12759440;s:8:"duration";s:5:"17:43";s:12:"previewImage";s:86:"http://legacieslost.com/writing/wp-content/plugins/podpress/images/vpreview_center.png";s:10:"dimensionW";i:0;s:10:"dimensionH";i:0;s:3:"rss";s:2:"on";s:4:"atom";s:2:"on";}}
因此,我可以在那里看到我想要的数据,我知道我需要创建另一个函数,该函数接受第一个结果并仅提取带有键URI的值,但我不知道该函数应该是什么样子。尽管我花了很多时间查看PHP手册上的这一页,但我还没有真正理解“数组思维”。

http://php.net/manual/en/control-structures.foreach.php

对施工有什么建议吗?

2 个回复
SO网友:Oleg Butuzov

$meta = get_post_meta(get_the_ID(), \'_podPressMedia\', true);
$meta = maybe_unserialize($meta);
if (is_array($meta) && count($meta) > 0)
    foreach($meta as $item){
        //do something...
    }
请不要对php数据存储结构使用unserialize/serialize,因为它是本机的maybe_serialize/maybe_unserialize. 从Posteta表中检索单个值也不需要get\\u post\\u custom,只需使用get_post_meta whish将只返回分配给帖子的所需元数据。

SO网友:Tesana

编辑:使用get\\u post\\u meta()返回一个未序列化的数组,re:post from Oleg Butuzov。谢谢!-我更新了代码示例。

数组的输出是序列化的,必须先取消序列化,然后才能使用php访问信息。

在得到this post 我能够使用unserialize();访问uri。

  <?php 
      //grabs the array with the meta fields of podPress for a particular post or page.
      $pp_array = get_post_meta(get_the_ID(), \'_podPressMedia\', true);

      $pp_array = $pp_array[0];
  ?>

  <a href="<?php echo esc_attr($pp_array["URI"]) ?>" title="<?php echo esc_attr($pp_array["title"]);?>.mp3">Download</a>
对于那些好奇的人,这里是$pp\\U数组的结果。

第一步:

$pp_array = get_post_meta(get_the_ID(), \'_podPressMedia\', true);
var_dump($pp_array);


RETURNS

array(1) { [0]=> array(10) { ["URI"]=> string(85) "http://www.writingexcuses.com/wp-content/uploads/Writing_Excuses_8_1_Microcasting.mp3" ["title"]=> string(33) "Writing Excuses 8.1: Microcasting" ["type"]=> string(9) "audio_mp3" ["size"]=> int(12759440) ["duration"]=> string(5) "17:43" ["previewImage"]=> string(86) "http://legacieslost.com/writing/wp-content/plugins/podpress/images/vpreview_center.png" ["dimensionW"]=> int(0) ["dimensionH"]=> int(0) ["rss"]=> string(2) "on" ["atom"]=> string(2) "on" } } - See more at: http://www.writingexcuses.com/season-archives/izzy-detective/#sthash.jr9uR8xx.dpuf
第2步:

$pp_array = $pp_array[0];
var_dump($pp_array);

RETURNS

array(10) { ["URI"]=> string(85) "http://www.writingexcuses.com/wp-content/uploads/Writing_Excuses_8_1_Microcasting.mp3" ["title"]=> string(33) "Writing Excuses 8.1: Microcasting" ["type"]=> string(9) "audio_mp3" ["size"]=> int(12759440) ["duration"]=> string(5) "17:43" ["previewImage"]=> string(86) "http://legacieslost.com/writing/wp-content/plugins/podpress/images/vpreview_center.png" ["dimensionW"]=> int(0) ["dimensionH"]=> int(0) ["rss"]=> string(2) "on" ["atom"]=> string(2) "on" } - See more at: http://www.writingexcuses.com/season-archives/izzy-detective/#sthash.iiQ43LEp.dpuf 
步骤3:

<p><?php echo $pp_array["URI"];?></p>

RETURNS

http://www.writingexcuses.com/wp-content/uploads/Writing_Excuses_8_1_Microcasting.mp3

结束