Для Google Maps решил сделать преобразование адреса в координаты "на лету", при сохранении, или изменении поста.
Написал такую вот штуку.
// Обновление координат при обновлении или создании поста
add_action( 'save_post', 'createupdate_coords' );
function createupdate_coords($post_id) {
if ( !wp_is_post_revision( $post_id ) ) {
$item_adress = get_post_meta($post_id, 'item_adress', true);
$lat_long_coords = getLatLong($item_adress);
$lng = $lat_long_coords['long'];
$lat = $lat_long_coords['lat'];
update_post_meta($post_id, 'item_google_lng', $lng );
update_post_meta($post_id, 'item_google_lat', $lat );
}
}
но поля "item_google_lng" и "item_google_lat" после обновления страницы по прежнему пустые.
ф–ция "update_post_meta" отдает true, $post_id – реальный айди поста, $lng и $lat – координаты.
Может нужен какой-то доступ, или еще что?
Спасибо! !
еще заметил, если вписать код:
где-то в header – работает, а вот в function.php – нет 🙁
теперь точно какая-то фигня с правами.
Если из хедера вызываю
работает.
А если из functions.php через
не пашет! Что же это?
Понял в чем была проблема.
При такой форме записи:
функция срабатывает еще до обновления поста. Таким образом, кастомфилды записываются в пост, но сразу же затираются теми значениями, которые были переданы при нажатии на кнопку "обновить".
А как-то можно прикрутить функцию после ‘save_post’ ???
Решение нашлось: меняем save_post на wp_insert_post!