Sto lavorando a un progetto in cui sto creando un tipo di post personalizzato e dati personalizzati immessi tramite meta box associate al mio tipo di post personalizzato. Per qualsiasi motivo, ho deciso di codificare le meta box in modo tale che gli input in ciascun metabox facciano parte di un array. Ad esempio, sto memorizzando longitudine e latitudine:
<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>
Per qualsiasi motivo, mi è piaciuta l'idea di avere una voce postmeta singolare per ogni metabox. Al save_post
gancio, salvo i dati in questo modo:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
L'ho fatto perché ho tre metabox e mi piace avere solo 3 valori postmeta per ogni post; tuttavia, ora ho realizzato un potenziale problema con questo. Potrei voler usare WP_Query per estrarre solo determinati post basati su questi meta valori. Ad esempio, potrei voler ottenere tutti i post con valori di latitudine superiori a 50. Se avessi questi dati nel database individualmente, magari usando la chiave latitude
, farei qualcosa del tipo:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Dal momento che ho la latitudine come parte della _coordinates
postmeta, questo non avrebbe funzionato.
Quindi, la mia domanda è: c'è un modo per utilizzare meta_query
per interrogare un array serializzato come ho in questo scenario?