update_post_meta не хочет работать

Для 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 – координаты.

Может нужен какой-то доступ, или еще что?
Спасибо! !

еще заметил, если вписать код:

        update_post_meta($post_id, 'item_google_lng', $lng );
        update_post_meta($post_id, 'item_google_lat', $lat );

где-то в header – работает, а вот в function.php – нет 🙁

теперь точно какая-то фигня с правами.

Если из хедера вызываю

update_post_meta(210, "item_google_lng", 123 );

работает.
А если из functions.php через

add_action( 'save_post', 'createupdate_coords' );
function createupdate_coords() {    
update_post_meta(210, "item_google_lng", 123 );
}

не пашет! Что же это?

Понял в чем была проблема.
При такой форме записи:

add_action( 'save_post', 'createupdate_coords', 1 );

функция срабатывает еще до обновления поста. Таким образом, кастомфилды записываются в пост, но сразу же затираются теми значениями, которые были переданы при нажатии на кнопку "обновить".

А как-то можно прикрутить функцию после ‘save_post’ ???

Решение нашлось: меняем save_post на wp_insert_post!

Anonymous
Отправить
Ответ на: