Hallo zusammen!
Ich habe hier ein kleines WordPress Plugin, welches per Button aufgerufen wird.
Dieses Skript soll einen RSS-Feed einlesen und dann sämtliche Feed-Einträge, welche seit dem vergangenen Skript-Aufruf hinzu kamen, in eine Liste schreiben.
Mein Problem ist, dass dieses Skript etliche Monate hervoragend funktionierte, und nun plötzlich nicht mehr. Es werden keine Listen mehr erstellt.
Um die Funktion des Skripts zu verstehen, habe ich mir Debug-Ausgaben eingebaut.
Soweit ich nun sehen kann, funktioniert ein verschachtelter Datumsvergleich nicht.
Das vollständige Skript habe ich ans Ende gestellt. Momentan geht es mir um den Teil mit dem Datum:
PHP-Code:
$pubDate = strtotime(date('d.m.Y',strtotime($item->pubDate)));
echo "DEBUG: Variable \$item->pubDate = " . $item->pubDate . "<br>";
Das ist derart ineinander verschachtelt, dass ich den Überblick verliere.
Ich habe es daher in verschiedene Teil-Abschnitte zerlegt:
PHP-Code:
$stringfromfeed = "Wed, 29 Okt 2014 17:08:16 EDT ";
echo "DEBUG: Variable \$stringfromfeed = " . $stringfromfeed . "<br>";
$testdate = strtotime($stringfromfeed);
echo "DEBUG: Variable \$testdate = " . $testdate . "<br>"; // liefert immer 0 ??
$teststring2 = date('d.m.Y',$testdate);
echo "DEBUG: Variable \$teststring2 = " . $teststring2 . "<br>";
$testdate2 = strtotime($teststring2);
echo "DEBUG: Variable \$testdate2 = " . $testdate2 . "<br>";
Der String "Wed, 29 Okt 2014 17:08:16 EDT " ist direkt aus dem Quelltext meines RSS-Feeds und wird auch durch die Debug-Ausgabe im oberen PHP-Listing bestätigt.
Aber bereits in der Variablen $testdate steht dann eine Null ("0") drin.
Ich vermute, dass genau das der Fehler ist, denn bei den nachfolgenden Vergleichen sind damit sämtliche Feedeinträge kleiner (bzw. älter) als das Datum des letzten Skriptlaufs.
Kann mir bitte jemand erklären, was der Autor dieses Skripts mit den ineinander geschachtelten Datumsumwandlungen bezwecken wollte? -- Mir ist das nicht ganz klar.
Großes Dankeschön für einen guten Tipp!
Viele Grüße,
Marcus
PS: hier noch der Link zum Feed:
http://www.die-zurhorsts.de/genealogie/tngrss.php
Komplettes Skript:
PHP-Code:
<?php
if($_POST['tng_rss'] == 'true') {
if( !$xml = simplexml_load_file(TNG_RSS_FEED_URL) ) {
echo 'Could not read RSS file!';
}
$last_update = intval(get_option('tng_rss_last_update','0'));
echo "DEBUG: Variable \$last_update = " . $last_update . " (aus Datenbank gelesen)<br>";
$stringfromfeed = "Wed, 29 Okt 2014 17:08:16 EDT ";
echo "DEBUG: Variable \$stringfromfeed = " . $stringfromfeed . "<br>";
$testdate = strtotime($stringfromfeed);
echo "DEBUG: Variable \$testdate = " . $testdate . "<br>"; // liefert immer 0 ??
$teststring2 = date('d.m.Y',$testdate);
echo "DEBUG: Variable \$teststring2 = " . $teststring2 . "<br>";
$testdate2 = strtotime($teststring2);
echo "DEBUG: Variable \$testdate2 = " . $testdate2 . "<br>";
$items = array();
foreach($xml->channel[0]->item as $item) {
$pubDate = strtotime(date('d.m.Y',strtotime($item->pubDate)));
echo "DEBUG: Variable \$item->pubDate = " . $item->pubDate . "<br>";
if($pubDate <= $last_update)
break;
$items[strtotime(date('d.m.Y',$pubDate))][] = $item;
}
$postcount = 0;
foreach($items as $date => $date_items) {
if($date > $last_update) {
$last_update = $date;
}
$content = '<ul>';
$strdate = date('l, d. F Y', $date);
foreach($date_items as $item) {
$title = preg_replace("#\([^\)]*\)#", "", $item->title);
$content .= '<li>';
$content .= '<a href="'.$item->link.'" target="_blank">'.$title.'</a> - '.$item->description;
$content .= '</li>';
}
$content .= '</ul>';
$title = 'TNG Updates vom '.date('d.m.Y',$date);
$post = wp_insert_post(array(
'post_content' => $content,
'post_title' => $title,
'post_status' => 'draft',
'post_category' => explode(',',TNG_RSS_CATEGORY),
'tags_input' => explode(',',TNG_RSS_TAGS),
'post_author' => TNG_RSS_AUTHOR,
'post_date' => date('Y-m-d H:i:s',$date)
));
if($post > 0) {
set_post_thumbnail( $post, TNG_RSS_FEATUREDIMAGE );
$postcount++;
}
else {
echo 'Artikel '.$title.' konnte nicht erstellt werden.';
}
}
echo 'DEBUG: ' . $last_update.' wird als neues Datum in die Datenbank geschrieben.';
update_option('tng_rss_last_update',$last_update);
echo $postcount.' Artikel hinzugefügt.';
}
}
?>