Я працюю над проектом, в якому я створюю користувальницький тип публікації та власні дані, введені через метаполе, пов’язані з моїм користувацьким типом публікації. З будь-якої причини я вирішив зашифрувати метаполе таким чином, щоб вхідні дані у кожен метабокс були частиною масиву. Наприклад, я зберігаю довготу та широту:
<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 значення постмета для кожної публікації; однак я зараз зрозумів потенційну проблему з цим. Я, можливо, хочу використовувати 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
для запиту серіалізований масив, як у мене в цьому сценарії?