1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

get_post_meta einzeln oder mehrfach aufrufen?

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von mkronenfeld, 12. Februar 2017.

Schlagworte:
  1. mkronenfeld

    mkronenfeld Well-Known Member

    Registriert seit:
    10. Oktober 2016
    Beiträge:
    227
    Zustimmungen:
    0
    Welchem Ansatz würdet ihr bevorzugen und wieso?

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Oder...

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  2. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Wenn es wirklich nur um die drei Werte geht, würde ich die Variante nehmen, die ich übersichtlicher finde. In dem Fall vermutlich letztere.
    Bei den paar Aufrufen dürfte es für die Performance völlig egal sein.

    Wenn das mit den drei Variablen nur ein Beispiel ist und es in Wirklichkeit um wesentlich mehr Variablen geht, dann würde ich einfach testen, welche von beiden schneller ist.

    Ich weiß, das ist jetzt keine super fundierte Antwort. Aber zumindest prakmatisch ;)

    Alternativ könntest du dir die get_post_meta() auch mal anschauen. Jenachdem, was die alles macht und wie komplex die aufgebaut ist, ist die zweite Variante wahrscheinlich auch die "bessere", weil der Funktionsaufruf nur einmal stattfindet und du danach ja nur noch Variablen zuweist.
     
  3. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.636
    Zustimmungen:
    1.778
    Klar den ersten, der zweite benötigt jeweils noch ein !empty() oder isset() und is_array() o.ä. pro Variable sonst hagelt es PHP Warnings wenn custom_field_X in einem Post nicht existiert ...
     
    #3 b3317133, 12. Februar 2017
    Zuletzt bearbeitet: 12. Februar 2017
  4. danielgoehr

    danielgoehr Well-Known Member

    Registriert seit:
    13. Juli 2016
    Beiträge:
    2.674
    Zustimmungen:
    128
    Ok stimmt. Das habe ich nicht bedacht und ist natürlich ein starkes Argument für die erste Variante.
    Es hängt aber natürlich auch davon ab, ob und wie der Inhalt der Variablen im weiteren Verlauf verwendet und überprüft wird. Wenn das eh noch geschieht, wäre es aus meiner Sicht kein Nachteil, dass dann an dieser Stelle gleich mit zu erledigen.
    Mich "stört" halt gefühlt irgendwie der mehrfache Aufruf der Funktion in der ersten Variante.
     
  5. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.636
    Zustimmungen:
    1.778
    Mehrfacher Aufruf ist kein Problem, get_post_meta() nutzt intern den WordPress Object Cache.

    Und wenn ein Post z.B. sehr viele post meta hat, z.B. durch manche SEO-Plugins, Übersetzungs-Plugins o.ä., dann bekommt man beim Abholen aller Daten auf einmal auch noch viel zu viel zurück.

    Und bzgl. Überprüfung, alleine vor $var['custom_field_b'][0] müsste man schon manuell prüfen, ob $var['custom_field_b'] überhaupt existiert und dazu noch kein leeres Array ist, bringt unnötige Komplexität rein.
     
    #5 b3317133, 12. Februar 2017
    Zuletzt bearbeitet: 12. Februar 2017
  6. mkronenfeld

    mkronenfeld Well-Known Member

    Registriert seit:
    10. Oktober 2016
    Beiträge:
    227
    Zustimmungen:
    0
    Danke euch beiden! Aus eurer Pro-Contra-Liste kann man viel lernen. Den WP Objekt Cache hatte ich total vergessen. Auch den unnötig hohen Rückgabewert aufgrund Einflüsse Dritter hatte ich nicht auf dem Schirm.

    Aus dem Bauch heraus habe ich zum Mehrfachaufruf tendiert, konnte es bis dato aber nie wirklich begründen.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden