Posts abfrage, bei denen ein Custom Field NULL ist

Um posts abzufragen, bei denen ein Custom Field NULL ist, hilft folgender Code:

$args = array(
    'posts_per_page' => -1,
    'post_type' => 'my_post_type', // change
    'post_status' => 'publish',
    'order' => 'DESC',
    'orderby' => 'date',
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'my_custom_field', // change
            'compare' => 'NOT EXISTS'
        )
    )
);

// Build Query
$query = new WP_Query($args);

2 Gedanken zu “Posts abfrage, bei denen ein Custom Field NULL ist”

  1. Hi, 2 Anmerkungen: posts_per_page sollte aus Performancegründen eigtl. nie auf „-1“ gesetzt werden. Selbst ein sehr hoher Wert ist besser als -1.

    Und: Die Abfrage gilt unter besten Umständen. Wer aber seine Custom fields mit zB Advanced Custom Fields bearbeitet, kann uU in ein (ziemlich absurdes) Problem rennen: Da werden CFs mit dem String (!) „NULL“ gespeichert. Da würde so eine Abfrage zB keine Ergebnisse liefern.

    Ich poste das hier, weil ich selbst mal in ewiger Verweigerung eines var_dump eine halbe Stunde an dem Problem getüftelt habe.

    • Hallo Michael,

      vielen Dank für deine Hinweise. Meiner Erfahrung nach gibt es bei den wenigsten Webseiten tausende Posts, so dass posts_per_page mit -1 zu wirklichen Problemen führt. Sind aber entsprechend viele Posts vorhanden, hast du natürlich recht.

      An ACF bin ich in diesem Kontext noch nicht vorbeikommen, das Beispiel bezog sich auf Core Custom Fields.

      Viele Grüße
      Sebastian

Schreibe einen Kommentar