Как фильтровать / блокировать элементы RSS-канала с помощью SimplePie

У меня есть лента новостей Google, которую я показываю на своем сайте WordPress, используя следующий код:

$feed = fetch_feed($rss_url); // specify the source feed
$limit = $feed->get_item_quantity(20); // specify number of items
$items = $feed->get_items(0, $limit); // create an array of items
foreach ($items as $item) : 
    echo $item->get_description(); 
endforeach;

Проблема в том, что мне нужно отфильтровать отдельные статьи. Новости Google имеют теги guid. Учитывая guid элемента, как я могу сказать SimplePie игнорировать данный элемент?

Спасибо-


person Yarin    schedule 16.05.2011    source источник


Ответы (1)


SimplePie не имеет встроенных функций фильтрации (пока). Однако вы можете выборочно отображать только те элементы, которые вам нужны:

$feed = fetch_feed($rss_url); // specify the source feed
$limit = $feed->get_item_quantity(20); // specify number of items
$items = $feed->get_items(0, $limit); // create an array of items
$ignoreGUIDs = array("http://example.com/feed?id=1", "http://example.com/feed?id=2");
foreach ($items as $item) : 
    if(!in_array($item->get_id(false), $ignoreGUIDs)){
        echo $item->get_description();
    }
endforeach;

Метод get_id () возвращает массив тегов <guid>, <link> и <title> элемента, каждое из которых предложение in_array() затем ищет совпадение с каждым из ваших $ignoreGUIDs. Если совпадений нет, это означает, что GUID элемента отсутствует в вашем списке исключения, и поэтому элемент отображается (с помощью echo).

person rzetterberg    schedule 18.05.2011
comment
@ Ancide - Удивительно, что нет фильтрации, но ваше решение - лучший вариант после этого. Спасибо за ссылку на get_id ... - person Yarin; 19.05.2011