2016-04-16 13 views
0

Ich versuche, die Wordpress-Site eines Freundes auf die neuesten Versionen von Wordpress und PHP zu aktualisieren. Alles funktioniert gut, außer für einen Scroll-Newsticker, den er auf seiner Homepage benutzt, der mit "Illegal string offset date" ausgeht, und es werden keine Nachrichten angezeigt. Dies ist das Skript:Ungültiger Zeichenfolgen-Offset 'Datum'

<?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++; 
} 
?> 

ich die Verwendung von $ otion zwei Mal bemerkt, was ich dachte, war vielleicht ein Tippfehler. Aber als ich das zu $ ​​-Option änderte, wurde der Rest der Seite nicht geparst, also denke ich, dass das nicht das Problem ist.

Da bin ich kein Coder und ich zog meine Haare für 2 Nächte jetzt aus. Zeit, um Hilfe zu bekommen, bevor ich keine mehr habe. Kann mir jemand dabei helfen?

+0

Meine erste Vermutung ist, dass "$ otion" * ist ein Tippfehler, und sollte "$ option" (obwohl es die Seite anhält). Andernfalls würde die folgende Zeile ihr '$ option'-Array von:' add_option ('xmlFeed', $ option); 'Also den Tippfehler korrigieren (weil Sie müssen), und überprüfen Sie Ihre Fehlerprotokolle/danach Fehlerberichte zu aktivieren sehen Sie, welcher Fehler dann ausgespuckt wird. – Marcus

+0

Also mein Eingeweide hatte Recht mit dem $ otion. Ich änderte den Code und der Fehler, den ich in den Protokollen finden kann, ist: PHP Fataler Fehler: Uncaught Ausnahme "Exception" mit Nachricht "Serialisierung von 'SimpleXMLElement' ist nicht erlaubt" Ich werde Google in der Zwischenzeit – Jan

+0

"* Ich werde in der Zwischenzeit Google dazu finden." "Warum sollten Sie sich die Mühe machen, wenn die ersten 5 Ergebnisse in Google Sie normalerweise direkt zu StackOverflow zurückbringen? Benutzen Sie einfach das Suchwerkzeug hier;) Spart Ihnen eine Rundreise. – Marcus

Antwort

0

Es ist keine echte Antwort auf meine Frage, aber ich fand another script, dass, mit einigen kleinen Änderungen, perfekt funktioniert. Also bin ich glücklich.

<?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>'; } ?>

Es ist kleiner und sauberer. Danke für Ihre Hilfe @Marcus