А как будет действовать данная функция?
Пользователь обновляет или заходит на страницу, выполняется проверка if ( $cached !== false )
. Если кеш есть, то результат выдается из кеша, если нет, то снова делается парсинг. Так?
Или транзитный кеш или клади xml файл на свой сервер (если уверен в надежности донора с которого его тянешь). Т.е. обращайся к файлу на своем сервере -если нет — то запрос на внешний ресурс
Если время его создания превышает заданное (например час) — то вновь качай с внешнего сайта. Чистый пых
Пробую вот так
$xml = get_transient( 'xml' );
if ( false === $xml ) {
$xml = new SimpleXMLElement($output);
set_transient( 'xml', $xml );
}
$event = $xml->xpath("//event[@name='true']")[0];
$markets = $event->xpath("markets")[0];
$total = $markets->xpath("market[@main='true']")[0][@value];
Получаю ошибку
Fatal error: Uncaught exception ‘Exception’ with message ‘Serialization of ‘SimpleXMLElement’ is not allowed’ in /home/mysite/public_html/wp-includes/functions.php:435 Stack trace: #0 /home/mysite/public_html/wp-includes/functions.php(435): serialize(Object(SimpleXMLElement)) #1 /home/mysite/public_html/wp-includes/option.php(436): maybe_serialize(Object(SimpleXMLElement)) #2 /home/mysite/public_html/wp-includes/option.php(739): add_option(‘_transient_xml’, Object(SimpleXMLElement), », ‘yes’) #3 /home/mysite/public_html/wp-content/themes/mytheme/content-aside.php(58): set_transient(‘xml’, Object(SimpleXMLElement)) #4 /home/mysite/public_html/wp-includes/template.php(690): require(‘/home/mysite/…’) #5 /home/mysite/public_html/wp-includes/template.php(647): load_template(‘/home/mysite/…’, false) #6 /home/mysite/public_html/wp-includes/general-template.php(167): locate_template(Array, true, false) #7 /home/mysite/public_html/wp-content/themes/mytheme/single.php(32): get_template_part(‘con in /home/mysite/public_html/wp-includes/functions.php on line 435
В чем ошибка?
или клади xml файл на свой сервер
Такое не получится. Есть доступ по ссылке к данным в формате xml, к тому же еще только с определенного IP. Доступа к статическому файлу нет.