FETCH_RSS() │ WP 1.5.0
Функция FETCH_RSS() позволяет получить RSS-ленту с указанного URL и распарсить её. Она создает объект класса MagpieRSS.
Эта функция используется для получения RSS-ленты в формате объекта Magpie, с которым удобно работать (см. классы RSSCache и MagpieRSS). Также функция кеширует результат запроса.
Существует похожая функция fetch_feed(), которая создает тот же объект ленты по URL, но работает на основе класса SimplePie. Функция fetch_feed() более новая и была представлена в версии 2.8. Рекомендуется использовать именно fetch_feed() вместо этой функции.
Хуки
В данной функции хук не предусмотрен.
Возвращаемое значение
Функция возвращает объект MagpieRSS в случае успеха или false в случае ошибки.
Использование
fetch_rss( $url );
$url(строка) — обязательный параметр, URL для получения ленты.
Примеры использования
Пример 1: Получение 5 последних записей с RSS-ленты
items, 0, 5);
if (empty($rss_items)) {
echo 'нет записей';
} else {
foreach ($rss_items as $item) {
echo '';
}
}
?>
Пример 2: Отключение кеша или изменение его времени жизни
Чтобы изменить параметры кеширования функции fetch_rss(), используйте следующие константы:
define('MAGPIE_CACHE_ON', 0); // Отключить кеш
define('MAGPIE_CACHE_AGE', 3600); // Изменить время жизни кеша на 1 час
Эти константы можно определить в файле wp-config.php.
Заметки
- Пакет: Внешний
- Подпакет: MagpieRSS
Изменения
- С версии 1.5.0 — функция была введена.
Код функции FETCH_RSS()
function fetch_rss($url) {
// инициализируем константы
init();
if (!isset($url)) {
return false; // ошибка: функция вызвана без URL
}
// если кеш отключен
if (!MAGPIE_CACHE_ON) {
$resp = _fetch_remote_file($url);
if (is_success($resp->status)) {
return _response_to_rss($resp);
} else {
return false; // ошибка: не удалось получить $url и кеш выключен
}
}
// если кеш включен
$cache = new RSSCache(MAGPIE_CACHE_DIR, MAGPIE_CACHE_AGE);
$cache_status = 0; // ответ проверки кеша
$request_headers = array(); // HTTP заголовки для запроса
$rss = 0; // распарсенный RSS объект
if (!$cache->ERROR) {
// проверяем кеш
$cache_status = $cache->check_cache($url);
}
// если объект в кеше и он свежий, возвращаем его
if ($cache_status == 'HIT') {
$rss = $cache->get($url);
if (isset($rss) && $rss) {
$rss->from_cache = 1;
return $rss;
}
}
// если кеш устарел, пытаемся получить свежую версию
if ($cache_status == 'STALE') {
$rss = $cache->get($url);
if (isset($rss->etag) && $rss->last_modified) {
$request_headers['If-None-Match'] = $rss->etag;
$request_headers['If-Last-Modified'] = $rss->last_modified;
}
}
$resp = _fetch_remote_file($url, $request_headers);
if (isset($resp) && $resp) {
if ($resp->status == '304') {
// мы имеем самую последнюю версию
$cache->set($url, $rss);
return $rss;
} elseif (is_success($resp->status)) {
$rss = _response_to_rss($resp);
if ($rss) {
$cache->set($url, $rss);
return $rss;
}
} else {
return false; // ошибка: не удалось получить $url
}
} else {
return false; // не удалось получить файл RSS по неизвестным причинам
}
return false; // если все попытки не удались
}
Связанные функции
- add_feed() — добавляет новую ленту.
- bloginfo_rss() — возвращает информацию о блоге в формате RSS.
- fetch_feed() — используется для получения RSS-лент.
- get_comment_link() — получает ссылку на комментарии.
- get_the_content_feed() — получает содержимое в формате RSS.
- post_comments_feed_link() — генерирует ссылку на ленту комментариев.