Support » Allgemeine Fragen » Benutzerdefiniertes Feld statt Datum des Beitrages

  • Hallo,

    gibt es eine Möglichkeit statt dem Datum eines Beitrages, den Inhalt eines benutzerdefinierten Feldes anzuzeigen, falls es ausgefüllt wurde?

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Die Möglichkeit gibt es. Du wirst aber ein Child-Theme programmieren müssen, das mit einer if-Schleife abfragt ob ein Custom Field gesetzt wurde und dann entweder das Custom Field oder das Beitragsdatum ausgibt.

    Thread-Ersteller petmat1987

    (@petmat1987)

    Hallo,

    also bei meiner Sache ist nun folgender Code herausgekommen mit dem es zu funktionieren scheint:

    function wp_change_date() {
    
    	if ( get_post_meta(get_the_ID(), 'letzte_aktualisierung', true) ) 
    	{
    		$date = 'Zuletzt Aktualisiert: ' . get_post_meta(get_the_ID(), 'letzte_aktualisierung', true);
    	}
    	else
    	{
    		$date = get_post_time( 'd.m.Y' );
    	}
    		
        return $date;
    }
    add_action( 'get_the_date', 'wp_change_date' );

    Vielleicht kann ja nochmal jemand Feedback geben, ob ich das so lassen kann oder ob ich irgendwelche Nebenwirkungen meines Codes nicht überblicke.

    function wp_change_date(); – da gibt es gleich zwei Probleme:

    1. Du solltest eigene Funktionen nicht mit wp_ anfangen lassen, da es durchaus möglich ist, das irgendwann einmal für den Core eine Funktion mit dem gleichen Namen eingeführt wird und dadurch deine Funktion zu einem fatal Error führt. Sofern du deine Funktionen nicht in eigene Objekte packst, solltest du ein eigenes Präfix als „Pseudo-Namespace“ verwenden. In Tutorials siehst du dazu häufig, dass Funktionen mit der Vorsilbe my_ versehen werden, die AnwenderInnen mit einem eigenen Präfix ersetzen sollen, also z.B. pix_change_date(); oder petmat_change_date();.
    2. WordPress unterscheidet zwischen add_action() und add_filter(), wobei add_action() verkürzt ausgedrückt Funktionalität (eine „Aktion“) hinzufügt und add_filter() die Ausgabe einer Funktion filtert, bevor sie zurückgegeben wird. get_the_date() ist ein Filter-Hook, du solltest also um die Lesbarkeit deines Skripts zu verbessern auch add_filter( 'get_the_date', 'name_der_funktion' ); verwenden.
      Dann hat dieser Hook verschiedene Parameter, die du deiner Funktion übergeben möchtest:

      $the_date
      
          (string) The formatted date.
      $format
      
          (string) PHP date format. Defaults to 'date_format' option if not specified.
      $post
      
          (int|WP_Post) The post object or ID.

      (Quelle: Developer Referenz)

      also sinngemäß:

      function petmat_change_date( $the_date ) {
        // Eigenes Feld "Letze Aktualisierung" abrufen
        $letzte_aktualisierung = get_post_meta( $post->ID, 'letzte_aktualisierung );
        // Nur wenn das Feld gefüllt wurde, Datum ändern
        if ( $letzte_aktualisierung ) {
      		$the_date = '$letzte_aktualisierung;
        }
      		
        return $the_date;
      }
      add_action( 'get_the_date', 'petmat_change_date' );

    Da das Datum an verschiedenen Stellen verwendet wird, wäre es ein Fehler, hier noch eine Zeichenketten anzuhängen. Das eigene Feld sollte deine Datumseingabe außerdem in einen Date-String umwandeln.

    Wenn es dir nur darum geht, das Datum der letzten Änderung auszugeben, kannst du auch die Funktion get_the_modified_date() verwenden und kannst dir das eigene Feld sparen.

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Benutzerdefiniertes Feld statt Datum des Beitrages“ ist für neue Antworten geschlossen.