Estoy trabajando en un proyecto en el que estoy creando un tipo de publicación personalizado y los datos personalizados ingresados a través de meta box asociados con mi tipo de publicación personalizada. Por la razón que sea, decidí codificar las meta cajas de tal manera que las entradas en cada metabox sean parte de una matriz. Por ejemplo, estoy almacenando longitud y latitud:
<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>
Por la razón que sea, me gustó la idea de tener una entrada singular postmeta para cada metabox. En el gancho save_post
, guardo los datos así:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Hice esto porque tengo tres metaboxes y me gusta tener solo 3 valores postmeta para cada publicación; Sin embargo, ahora me he dado cuenta de un problema potencial con esto. Es posible que desee utilizar WP_Query para extraer solo ciertas publicaciones basadas en estos valores meta. Por ejemplo, es posible que desee obtener todas las publicaciones que tengan valores de latitud superiores a 50. Si tuviera estos datos en la base de datos individualmente, tal vez utilizando la clave latitude
, haría algo como:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Ya que tengo la latitud como parte de _coordinates
postmeta, esto no funcionaría.
Entonces, mi pregunta es, ¿hay alguna forma de utilizar meta_query
para consultar una matriz serializada como la que tengo en este escenario?