Я работаю над проектом, в котором я создаю собственный тип записи и пользовательские данные, вводимые через мета-блоки, связанные с моим собственным типом записи. По какой-то причине я решил закодировать метаблоки таким образом, чтобы входные данные в каждом метабоксе были частью массива. Например, я храню долготу и широту:
<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>
По какой-то причине мне понравилась идея иметь отдельную запись постмета для каждого метабокса. На save_post
крючке я сохраняю данные примерно так:
update_post_meta($post_id, '_coordinates', $_POST['coordinates']);
Я сделал это, потому что у меня есть три метабокса, и мне нравится просто иметь 3 значения postmeta для каждого поста; однако теперь я понял потенциальную проблему с этим. Я могу захотеть использовать WP_Query только для извлечения определенных сообщений на основе этих мета значений. Например, я могу захотеть получить все сообщения, значения широты которых превышают 50. Если бы у меня были эти данные в базе данных по отдельности, возможно, с использованием ключа latitude
, я бы сделал что-то вроде:
$args = array(
'post_type' => 'my-post-type',
'meta_query' => array(
array(
'key' => 'latitude',
'value' => '50',
'compare' => '>'
)
)
);
$query = new WP_Query( $args );
Поскольку у меня есть широта как часть _coordinates
постмета, это не сработает.
Итак, мой вопрос, есть ли способ использовать meta_query
для запроса сериализованного массива, как у меня в этом сценарии?