Сначала вам нужно будет проанализировать XML и сгенерировать массив нужных вам медиа-объектов, а не получить прямой доступ к RSS-каналу.
Во-первых, вы можете использовать PHP-функцию xpath , чтобы написать запрос xpath и извлечь поля, которые вы ищете. Это позволяет вам выбирать и извлекать поля из файла XML. Получение этого XML-запроса может выглядеть следующим образом:
$context = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = 'http://www.cpac.ca/tip-podcast/jwplayer.xml';
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);
$itemarray = $xml->xpath("/rss/channel/item[1]");
Так что мы здесь делаем? Мы создаем массив, содержащий только первый элемент в файле XML. Этот массив будет выглядеть примерно так:
Array
(
[0] => Item
(
[title] => April 3, 2019
[description] => Jody Wilson-Raybould...
[jwplayer:image] => {image URL}
[jwlplayer:source] => SimpleXMLElement Object
)
)
На этом этапе вы можете разобрать массив в медиа-объекты для вставки в вашу конструкцию следующим образом:
$playlist[] = [
"file" => $itemarray[0][jwplayer:source]->['file'],
"image" => $itemarray[0][jwplayer:image],
"description" => $itemarray[0][description],
"title" => $itemarray[0][title]
];
Как только это будет сделано, вы можете передать свой массив медиа-объектов в API как обычно:
PodcastplayerInstance.setup({
playlist: <?php echo json_encode($playlist); ?>,
androidhls: true,
И это должно вернуть только те элементы, которые вы желаете. Если вы хотите сделать еще один шаг вперед, ознакомьтесь с этим руководством по шорткоду , чтобы узнать, как вы можете настроить его так, чтобы пользователь WordPress пропускал количество объектов, которые он хотел бы видеть! (Я оставлю выяснение, как настроить циклическое поведение на ваше усмотрение, но я думаю, что это довольно очевидно.)
PHP Pros, пожалуйста, прости мои грехи, я очень новичок в этом. Поправки к методологии и синтаксису приветствуются и приветствуются в комментариях.