Ich arbeite an einem Projekt, in dem ich einen benutzerdefinierten Beitragstyp erstelle und benutzerdefinierte Daten über Metafelder eingebe, die meinem benutzerdefinierten Beitragstyp zugeordnet sind. Aus irgendeinem Grund habe ich beschlossen, die Meta-Boxen so zu codieren, dass die Eingaben in jeder Metabox Teil eines Arrays sind. Zum Beispiel speichere ich Längen- und Breitengrade:
<p>
<label for="latitude">Latitude:</label><br />
<input type="text" id="latitude" name="coordinates[latitude]" class="full-width" value="" />
</p>
<p>
<label for="longitude">Longitude:</label><br />
<input type="text" id="longitude" name="coordinates[longitude]" class="full-width" value="" />
</p>
Aus irgendeinem Grund gefiel mir die Idee, für jede Metabox einen eigenen Postmeta-Eintrag zu haben. Am save_post
Haken speichere ich die Daten so:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Ich habe das gemacht, weil ich drei Metaboxen habe und ich mag es, nur 3 Postmeta-Werte für jeden Post zu haben. Allerdings habe ich jetzt ein potenzielles Problem damit erkannt. Ich möchte möglicherweise WP_Query verwenden, um nur bestimmte Beiträge basierend auf diesen Metawerten abzurufen. Zum Beispiel möchte ich möglicherweise alle Posts mit Breitengraden über 50 erhalten. Wenn ich diese Daten einzeln in der Datenbank hätte, vielleicht mithilfe des Schlüssels latitude
, würde ich Folgendes tun:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Da ich den Breitengrad als Teil der _coordinates
Postmeta habe, würde dies nicht funktionieren.
Meine Frage ist also, gibt es eine Möglichkeit, meta_query
ein serialisiertes Array wie in diesem Szenario abzufragen?