Wenn benutzerdefiniertes Feld leer dann
Redaktionelle Einordnung
Diese archivierte Diskussion behandelt Wenn benutzerdefiniertes Feld leer dann aus Sicht der Rubrik WordPress.
CMS- und Technikfragen sind heute besonders dann relevant, wenn sie Indexierung, Rendering, interne Verlinkung oder Relaunch-Risiken beeinflussen.
Sinnvoll nutzbar bleibt der Thread vor allem als historischer Kontext, für typische Fragestellungen und zur Einordnung älterer Empfehlungen.
Einige im historischen Thread genannte Tools, Dienste oder externe Links könnten heute nicht mehr verfügbar oder inhaltlich überholt sein. Nutzen Sie sie bitte nur mit zusätzlicher Prüfung.
Startbeitrag
Archivierter Thread aus dem Seitenreport-Forum.
Hallo zusammen!
Ich habe vor längerer Zeit einen Code gebastelt, der abfragt, ob ein Artikel geändert wurde, und wenn ja wann das war. Dann wird ein entsprechender Text in der Sidebar ausgegeben.
Nun wollte ich den Code so erweitern, das die Ausgabe nur dann erfolgt, wenn in einem benutzerdefinierten Feld - hier Änderungsdatum - ein Wert steht. Z. B. Ja.
Obwohl ich mich daran seit längerer Zeit versuche, bekomme ich es nicht wirklich hin.
Vielleicht mag mir der eine oder andere hier weiterhelfen: function updated_article() {
global $wpdb;
$upd_query = "SELECT post_date, post_status, post_type, post_modified,
DATE_FORMAT(post_modified, '%d.%m.%Y, um %H:%i:%s') AS post_modified_ger,
post_title AS posttitle, post_name AS postname, guid AS postid FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type= 'post'
AND post_modified >= post_date + INTERVAL 5 DAY
AND post_modified >= CURDATE() - INTERVAL 2 MONTH
ORDER BY post_modified DESC
LIMIT 3";
$upd_result = $wpdb->get_results($upd_query);
if ( empty($upd_result) or (get_post_meta($post->ID, 'Aenderungsdatum',
true) == "")) {
echo '... keine aktualisierten Artikel';
}
else
foreach ($upd_result as $updat) :
$post_modified_ger = $updat->post_modified_ger;
$posttitle = $updat->posttitle;
$postname = $updat->postname;
$postid = $updat->postid;
echo '
- ';
Aktualisiert am: '
.$updat->post_modified_ger.' ';
echo '
echo '
';
endforeach;
}
Antworten
3 BeiträgeHallo.
Bitte zukünftig mehr Informationen mitliefern. Es ist mühselig, erst den Code analysieren zu müssen, ehe man weiß, was du "nicht wirklich hin" bekommst.
Eine kleine Info wie "es wird immer nur "...keine aktualisierten Artikel" angezeigt, wäre hilfreich. Woran es nämlich scheitert, kann man zur Zeit nur raten.
Ich würde einfach mal blind schießen und behaupten, dass das Objekt $post innerhalb der Funktion nicht vorhanden ist, $post->ID demnach leer ist und get_post_meta immer einen leeren String zurück gibt.
Entweder das, oder $upd_result ist leer.
Make Seitenreport great again!
Hallo Matthes!
Sorry, das ich das mit zu wenigen Infos hingeklatscht habe.
Es gibt Artikel, die \'aktualisiert\' worden sind - und sei es nur, das ein Rechtschreibfehler korrigiert wurde. Siehe Anhang.
Ohne das or (get_post_meta($post->ID, \'Aenderungsdatum\', werden diese Daten auch angezeigt.
true) == ""))
Also müsste $post->ID leer sein.
Und dann ist das wohl auch die Variable, die er beim error-reporting anmeckert:
Undefined variable: post in .../updated-article.php on line 25
Notice: Trying to get property of non-object in .../updated-article.php on line 25
Denn das ist diese: if ( empty($upd_result) or (get_post_meta($post->ID, \'Aenderungsdatum\',
true) == "")) {
Nur wie hole ich die postid aus der Abfrage in die Abfrage des Benutzerdefinierten Feldes?
Du speicherst die geholten Daten in $upd_result, also enthält $upd_result auch die gesuchten IDs. Allerdings holst Du bis zu drei (LIMIT 3) Beiträge, d.h. $upd_result wird mehrere Datensätze enthalten.
Der Ansatz ist also noch nicht richtig.
Ermittle, wie viele Datensätze durch $wpdb->get_results zurückgegeben wurden und falls die Zahl >0 ist, starte die Schleife, die sie ausgibt.
Make Seitenreport great again!