2016-04-16 4 views
0

Я пытаюсь обновить сайт Wordpress друга до последних версий Wordpress и PHP. Все работает отлично, за исключением прокручиваемого информационного бюллетеня, который он использует на своей домашней странице, с ошибками с «Неверным смещением строки», и никаких новостей не отображается. Это сценарий:Недопустимое смещение строки 'date'

<?php 
$xmlOption = get_option('xmlFeed'); 
if (!isset($xmlOption)) { 
    $buildURL = "https://wordpress.org/news/feed/"; 
    $request = curl_init(); 
    curl_setopt($request, CURLOPT_URL, $buildURL); 
    curl_setopt($request, CURLOPT_HEADER, false); 
    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($request); 
    curl_close($request); 
    $xml  = new SimpleXMLElement($result); 
    $channel = $xml->channel; 
    delete_option('xmlFeed'); 
    $otion = array(
     'xml' => $channel, 
     'date' => date('y-m-d') 
    ); 
    add_option('xmlFeed', $option); 
} 
if ($xmlOption['date'] == date('y-m-d')) { 
    $channel = $xmlOption['xml']; 
} else { 
    $buildURL = "https://wordpress.org/news/feed/"; 
    $request = curl_init(); 
    curl_setopt($request, CURLOPT_URL, $buildURL); 
    curl_setopt($request, CURLOPT_HEADER, false); 
    curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($request); 
    curl_close($request); 
    $xml  = new SimpleXMLElement($result); 
    $channel = $xml->channel; 
    delete_option('xmlFeed'); 
    $otion = array(
     'xml' => $channel, 
     'date' => date('y-m-d') 
    ); 
    add_option('xmlFeed', $option); 
} 
$i = 0; 
while ($i <= 5) { 
    echo "<li><a href='" . $channel->item->$i->link . "' target='_blank'>" . $channel->item->$i->title . "</a></li>"; 
    $i++; 
} 
?> 

Я заметил, использование $ otion два раза, что я думал, было возможно, опечатка. Но когда я изменил это на $ option, остальная часть страницы не была разобрана, поэтому я думаю, что это не проблема.

Поскольку я не кодер, и я вытащил волосы на 2 ночи. Время, чтобы получить помощь до того, как у меня их не осталось. Кто-нибудь может помочь мне с этим?

+0

Моя первоначальная догадка заключается в том, что '$ otion' * - это опечатка и должна быть' $ option' (даже если она останавливает страницу). В противном случае, где бы следующая строка получала свой массив '$ option' из:' add_option ('xmlFeed', $ option); 'Так исправить опечатку (потому что вы должны) и проверить свои журналы ошибок/включить отчет об ошибках после этого посмотрите, какая ошибка выплевывается. – Marcus

+0

Так что мои кишки были прав насчет $ otion. Я изменил код, и ошибка, которую я могу найти в журналах, это: '' PHP Неустранимая ошибка: исключение исключений «Исключение» с сообщением «Сериализация« SimpleXMLElement »не допускается» Я пока буду в Google на этом – Jan

+0

«Я пока буду в Google». «Зачем беспокоиться, когда, как правило, первые 5 результатов в Google возвращают вас обратно в StackOverflow? Просто используйте инструмент поиска здесь;) Сохраняет вас в оба конца. – Marcus

ответ

0

Это не реальный ответ на мой вопрос, но я нашел another script, что с небольшими изменениями работает отлично. Поэтому я счастлив.

<?php $rss = new DOMDocument(); $rss->load('http://wordpress.org/news/feed/'); $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) { $item = array ( 'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, ); array_push($feed, $item); } $limit = 5; for($x=0;$x<$limit;$x++) { $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); $link = $feed[$x]['link']; echo '<li><a href="'.$link.'" title="'.$title.'" target="_blank">'.$title.'</a></li>'; } ?>

Это меньше и чище. Спасибо за вашу помощь @Marcus

Смежные вопросы