Warum ist das Array leer?

Ich versuche, Beiträge zu erhalten, die entweder kein benutzerdefiniertes Feld haben oder wenn sie einen Wert haben, der nicht wie ein bestimmter Parameter ist.

Hier ist mein Code:

$args_included = array( 'numberposts' => 1, 'post_type' => 'post', 'post_status' => 'published', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'requested_by', 'value' => '%' . $SANITIZED_PARAM . '%', 'compare' => 'NOT LIKE' ), array( 'key' => 'requested_by', 'compare' => 'NOT EXISTS' ) ) ); get_posts($args_included); // empty array 

Das benutzerdefinierte Feld requested_by soll entweder leer oder mit einem Zeichenfolgenwert wie diesem gefüllt sein: foo;bar;gamma; .

Wenn ich diesen Teil des Codes entferne:

  'relation' => 'OR', array( 'key' => 'requested_by', 'value' => '%' . $SANITIZED_PARAM . '%', 'compare' => 'NOT LIKE' ), 

Die Abfrage funktioniert dann.

Was vermisse ich ?

WP 3.5

UPDATE Hier ist mein abschließender Code, der funktioniert:

  $args_included = array( 'numberposts' => 1, 'post_type' => 'post', 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'requested_by', 'value' => $PARAM, 'compare' => 'NOT LIKE' ) ) ); get_posts($args_included); // Just ONE post 

Fehler:

  • Status ist publish nicht published
  • Das benutzerdefinierte Feld existiert nicht, daher können keine Ergebnisse gefunden werden.
    Im Folgenden finden Sie eine SQL-Abfrage für die Masseneinstellung des benutzerdefinierten Felds:

     INSERT INTO wp_postmeta(post_id,meta_key,meta_value) SELECT ID , 'requested_by', ';' FROM wp_posts WHERE post_status='publish' AND post_type='post' 
  • Letzte Tipps für den Debug-Zweck. Sie können die letzte SQL-Abfrage wie folgt an MySQL senden:

     $args = array( 'numberposts' => 1, 'post_type' => 'post', 'post_status' => 'publish', 'meta_query' => array( array( 'key' => 'requested_by', 'value' => $PARAM, 'compare' => 'NOT LIKE' ) ) ); $q = new WP_Query($args); echo $q->request; 

Solutions Collecting From Web of "Warum ist das Array leer?"