javascript - 如何限制来自 WordPress 短代码的内容?

标签 javascript php wordpress xml-parsing jwplayer

我正在开发一个 WordPress 短代码,我想限制来自 xml 的内容。 。

我用来创建 WordPress 短代码的代码是:

function podcast_func( $content = null ){
    ob_start();
    ?>
<script src="https://content.jwplatform.com/libraries/FZ8yNTef.js"></script>
<center><div id="podcast" align="center"></div></center> 
<script> 
var PodcastplayerInstance = jwplayer("podcast"); 
PodcastplayerInstance.setup({ 
  playlist: "http://www.cpac.ca/tip-podcast/jwplayer.xml", 
  androidhls: true, 
  preload: "auto", 
  height: 200, 
  width: 400,
  visualplaylist:false,
  stretching: "fill",
    "plugins": {
        "http://www.cpac.ca/tip-podcast/listy.js":{},
        'viral-2': {'oncomplete':'False','onpause':'False','functions':'All'}
    }
});
</script> 
<?PHP
    return ob_get_clean();
}
add_shortcode( 'podcast', 'podcast_func' );


关于使用这个:<div class="today-podcast" style="text-align: center;">[podcast]</div> ,它显示这里的全部内容 http://www.cpac.ca/tip-podcast/jwplayer.xml

问题陈述: 我想知道我应该在上面的 WordPress 短代码中进行哪些更改,以便它仅显示此处的第两个项目任何单个项目 http://www.cpac.ca/tip-podcast/jwplayer.xml

enter image description here

最佳答案

最好首先将返回的 XML 保存到文件中,然后循环回取消设置。

<?php
  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => "http://www.cpac.ca/tip-podcast/jwplayer.xml",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
      "cache-control: no-cache",
      "postman-token: 28025ee8-1e82-ce60-f6ae-f401118baa1c"
    ),
  ));

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    $fp = fopen(ABSPATH.'jwp.xml', 'w');
    fwrite($fp, $response);
    fclose($fp);
  }

  $xml = simplexml_load_file(ABSPATH.'jwp.xml');

  for($i = count($xml->channel->item); $i >= 2; $i--){
    unset($xml->channel->item[$i]);
  }

  $xml->saveXML(ABSPATH.'jwp.xml');

  ?>
  <script src="https://content.jwplatform.com/libraries/FZ8yNTef.js"></script>
  <center><div id="podcast" align="center"></div></center> 
  <script> 
  var PodcastplayerInstance = jwplayer("podcast"); 
  PodcastplayerInstance.setup({ 
    playlist: "<?php echo site_url(); ?>/jwp.xml", 
    androidhls: true, 
    preload: "auto", 
    height: 200, 
    width: 400,
    visualplaylist:false,
    stretching: "fill",
      "plugins": {
          "http://www.cpac.ca/tip-podcast/listy.js":{},
          'viral-2': {'oncomplete':'False','onpause':'False','functions':'All'}
      }
  });
  </script> 

如果您只需要第二个或第三个元素,请使用以下内容更新上面的代码

for($i = count($xml->channel->item); $i >= 3; $i--){
  unset($xml->channel->item[$i]);
}

for($i = 0; $i < count($xml->channel->item); $i++){
  unset($xml->channel->item[0]);
}

关于javascript - 如何限制来自 WordPress 短代码的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55446316/

相关文章:

javascript - 在 div 标签中使用 javascript 将 UL 添加到 HTML 时被捕获并出错

php - CodeIgniter - 检查数据库中是否已存在 slug

PHP WordPress Textarea 小部件保存将文本移到 Textarea 之外

javascript - 寻找网站推荐人的可靠方法

javascript - 将 PNG 图像连接到 APNG 动画图像

javascript - 如何在谷歌地图上找到最接近鼠标光标的纬度/经度位置

javascript - 未捕获的语法错误 : missing ) after argument list when write javascript in PHP code

php - 在 PHP 中查询 mysql 并将数据导出为 CSV

php - 如何在我的页脚每 10 个列表项后换行

php - 投资组合类别 - 如何更改它们在投资组合页面(WordPress 网站)上的显示顺序