Funktion direkt oder über Shortcode aufrufen
-
Servus
Ich habe eine Funktion geschrieben, welche ich mittels Shortcode in einem Widget in der Seitenleiste anzeige. Diese gibt aus, wann die letzte Änderung an der Seite statt gefunden hat.
add_shortcode('rad-last-change', 'radLastChange'); function radLastChange() { global $wpdb; $result = $wpdb->get_var("SELECT UNIX_TIMESTAMP(post_modified) as post_modified FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified DESC LIMIT 1"); // Zeitzone, Sommer-/Winterzeit korrigieren (1 Stunde = 3600 Sekunden) $result = $result + 3600; // eine deutsche WP-Installation kann auch mit setlocale() englische Wochentage ausgeben. $weekday = strftime( '%u', $result ); if ($weekday == 1){ $wd = "Montag";} elseif ($weekday == 2){ $wd = "Dienstag";} elseif ($weekday == 3){ $wd = "Mittwoch";} elseif ($weekday == 4){ $wd = "Donnerstag";} elseif ($weekday == 5){ $wd = "Freitag";} elseif ($weekday == 6){ $wd = "Samstag";} elseif ($weekday == 7){ $wd = "Sonntag";} $lastmod = $wd .", ". strftime( '%d.%m.%Y - %H:%M:%S', $result ); return $lastmod; }
Auf der Startseite habe ich die Anzeige direkt in die index-service.php integriert.
<?php echo radLastChange(); ?>
Funktioniert einwandfrei. Auf der Startseite will ich aber nicht ein Datum ausgeben, sondern nur ‚heute‘, ‚gestern‘ oder ‚vor 2 Tagen‘. Dafür eine weitere Funktion.
add_shortcode('rad-last-change-today', 'radLastChangeToday'); function radLastChangeToday($date_1 , $date_2 , $differenceFormat = '%a' ) { global $wpdb; $result = $wpdb->get_var("SELECT UNIX_TIMESTAMP(post_modified) as post_modified FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_modified DESC LIMIT 1"); // Zeitzone, Sommer-/Winterzeit korrigieren (1 Stunde = 3600 Sekunden) $result = $result + 3600; // Timestamp letzte Aktualisierung $jetzt .= strtotime("now"); // Timestamp aktuelle Zeit // Timestamp in Datum umwandeln $datumVon = strftime( '%d/%m/%Y', $result ); $datumBis = strftime( '%d/%m/%Y', $jetzt ); // Rechenbare Formate $myArrayDatumVon = explode("/", $datumVon); $datumVon = mktime(0,0,0,$myArrayDatumVon[1],$myArrayDatumVon[0],$myArrayDatumVon[2]); $myArrayDatumBis = explode("/", $datumBis); $datumBis = mktime(0,0,0,$myArrayDatumBis[1],$myArrayDatumBis[0],$myArrayDatumBis[2]); // Differenz in Tagen $differenztage = ($datumBis-$datumVon) / (3600*24); // Ausgabe formatieren, heute, gestern oder vor x Tagen if ( $differenztage == 0 ){ $ausgabe = "heute";} elseif ( $differenztage == 1 ){ $ausgabe = "gestern";} else { $ausgabe="vor ".$differenztage." Tagen";} // Ausgabe return $ausgabe; }
Funktioniert im Widget einwandfrei, auf der Startseite führt es zu einem Abbruch des Seitenaufbaus, ohne Erkennbares im Quellcode.
Macht für mich einfach keinen Sinn.
Gruß René
Ansicht von 1 Antwort (von insgesamt 1)
Ansicht von 1 Antwort (von insgesamt 1)
- Das Thema „Funktion direkt oder über Shortcode aufrufen“ ist für neue Antworten geschlossen.