WP_Query Meta-Abfrage nach Array-Schlüssel

Ich habe einen benutzerdefinierten Post-Typ mit seinem Meta in einem Array. Was ich tun muss, ist eine Abfrage basierend auf dem Wert eines Schlüssels in diesem Meta-Array.

$args = array( 'post_type' => 'my-cpt', 'posts_per_page' => -1, 'orderby' => 'meta_value', // Sort by this value 'meta_key' => 'my_meta_array', // Sort by this meta key 'meta_query' => array( array( 'key' => 'key here', // WHAT GOES HERE? 'value' => array( 'meta-value' ), ) ) ); $query = new WP_Query( $args ); 

Was passiert in dem Schlüssel meta_query, wenn mein Schlüssel my_meta_array [key] ist?

FYI: Die Schlüssel werden von my_meta_array [key] indiziert, in der db über update_post_meta ($ post_id, ‘river_helpers’, ‘my_meta_array’) gespeichert und über get_post_meta abgerufen ($ post-> ID, ‘my_meta_array’, true);

Solutions Collecting From Web of "WP_Query Meta-Abfrage nach Array-Schlüssel"

Das kannst du nicht tun. Wenn Sie postmeta (oder irgendein anderes Meta) maybe_serialize , führt WordPress es durch maybe_serialize was Objekte und Arrays in serialisierte Daten verwandelt. Wenn es wieder herausgezogen wird, wird es durch maybe_unserialize .

Serialisierte Daten sehen in etwa so aus:

 a:1:{s:3:"one";s:3:"two";} 

Mit anderen Worten, was gespeichert wird, kann nicht auf die von Ihnen gewünschte Weise abgefragt werden. Das Beste, was Sie tun können, ist eine LIKE Abfrage, die bestenfalls unzuverlässig und weniger performant ist. Verwenden Sie LIKE als compare Ihrer Meta-Abfrage .

Ihre beste Wette: Überdenken Sie, wie Sie Meta speichern und den key zu einem eigenen Eintrag verschieben. Metatabellen in WordPress sind Schlüsselwertspeicher. Es ist nicht unangemessen, mehrere Metawerte pro Posttyp oder Plugin zu speichern.