Intereting Posts
Обрезать сообщения из WP-Query? Как добавить кнопку Reset to Defaults с помощью API настроек? Управление и воспроизведение больших видеороликов текущий элемент меню, не работающий с пользовательским типом сообщения Параметр querystring теряется в правиле перезаписи Как объединить 2 php-функции в одну функцию с настраиваемым полем Использовать wget для поиска использованных изображений a: ошибка с проблемами с изображением как связать профиль автора с инструментами Google для веб-мастеров в многопользовательском блоге? WP Query group / по названию категории Сохранять активный класс на странице сообщений Как выбрать собственный размер загруженного изображения в теме через the_post_thumbnail () ;? Использование wp_get_nav_menu_items () для отображения списка дочерних страниц детей Редактировать мета-сообщение из REST API только с паролем Просмотреть описание тега на странице

Как использовать кеш с simplepie

Согласно документам, если вы хотите кэшировать результаты для получения RSS-каналов с помощью simplepie, вы делаете это:

add_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' ); $feed = fetch_feed( $feed_url ); remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' ); 

Мой вопрос в том, хочу ли я кэшировать результаты для нескольких URL-адресов каналов (путем циклического обращения к массиву), действительно ли я хотел бы добавить и удалить фильтр для каждого прохода цикла (это не приведет к отдельным записям в кеше для каждый канал), или я должен сделать это:

 add_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' ); for ($i=.......){ $feed = fetch_feed( $feed_url ); } remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_7200' ); 

Честно говоря (и это может быть очевидно), я смущен тем, как работает это кеширование, поскольку все, что я видел, являются примерами для одного канала, а не для нескольких каналов. Благодарю.

Solutions Collecting From Web of "Как использовать кеш с simplepie"

Пример использования вами из кодаx добавляет и удаляет его (возможно, не то, что вы хотите сделать), и не очень ясен.

По умолчанию WordPress будет кэшировать канал в течение 12 часов, используя wp_feed_cache_transient_lifetime , фактический код WP использует в течение 12 часов: $lifetime = 43200

Если вы хотите изменить время кеширования по всему миру для всех простых писем, вы можете добавить новое время в фильтр,

 //change cache to 24hrs add_filter( 'wp_feed_cache_transient_lifetime', create_function('$a', 'return 86400;') ); 

Если вместо этого вы хотите, чтобы определенные каналы имели разные времена кеширования, вы можете использовать параметр $url в фильтре.

 add_filter( 'wp_feed_cache_transient_lifetime', 'change_feed_speed' ); function change_feed_speed( $lifetime, $url ) { if( 'http://mysite.org/some-feed.rss' == $url ) return 86400; return $lifetime; }