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

У меня есть новостная лента 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. Учитывая подсказку элемента, как я могу сказать SimplePie игнорировать данный элемент?

* 1006 Благодарения и *

1 Ответ

3 голосов
/ 19 мая 2011

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).

...