Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

Wenn benutzerdefiniertes Feld leer dann

am 15.06.2014, 18:25 Uhr eröffnete Marcus folgenden Thread
Wordpress    1519 mal gelesen    3 Antwort(en).

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 '

    ';
    echo '
  1. Aktualisiert am: '
    .$updat->post_modified_ger.'
  2. ';
    echo '

';
endforeach;
}


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 15.06.2014, 20:33 Uhr schrieb matthes

Hallo.

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!

Marcus
Avatar Marcus
Guru (223 Beiträge)
am 15.06.2014, 22:04 Uhr schrieb Marcus

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\',
true) == ""))
werden diese Daten auch angezeigt.

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?


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 15.06.2014, 22:17 Uhr schrieb matthes

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!

  • 1


« zurück zu: Wordpress

Das Seitenreport Forum hat aktuell 5267 Themen und 36089 Beiträge.
Insgesamt sind 48168 Mitglieder registriert.