web-dev-qa-db-fra.com

update_post_meta ne fonctionne pas dans save_post

J'ai un problème avec une fonction que j'essaie de créer. Ça devrait être simple. Lorsqu'une personne enregistre une publication, saisissez la ville/l'adresse/la province et convertissez-la en long/lat, puis enregistrez-la dans la base de données. Le problème est que je ne peux pas faire fonctionner "update_post_meta" et je ne comprends pas pourquoi.

Le code est ci-dessous, c'est assez simple.

add_action( 'save_post_dealer', 'save_dealer_long_lat');
function save_dealer_long_lat($post_id) {
    $city = get_post_meta( $post_id, 'wpcf-dealer-city', true );
    $address = get_post_meta( $post_id, 'wpcf-dealer-address', true );
    $province = get_post_meta( $post_id, 'wpcf-dealer-province', true );
    $coords = get_coordinates($city, $address, $province);

    $lat = get_post_meta( $post_id, 'wpcf-latitude', true );
    $long = get_post_meta( $post_id, 'wpcf-longitude', true );

    if(empty($lat)) {
        update_post_meta($post_id, 'wpcf-latitude', $coords['lat'], $lat);
    }
    if(empty($long)) {
        update_post_meta($post_id, 'wpcf-longitude', $coords['long'], $long);
    }
}

quelques choses pour éliminer les erreurs évidentes.

  • oui, le type de message est 'dealer' - cette fonction est exécutée correctement.
  • Chacune des variables est définie correctement, j'ai confirmé avec un var_dump qu'elles étaient toutes définies et en donnant les détails corrects.
  • la fonction get_coordinates fonctionne également correctement et fournit le retour correct.
  • update_post_meta est atteint - les lat/long sont vides (aucune entrée n'existe même dans le DB)

Je ne comprends pas ce qui se passe, tout ce que je vois semble suggérer que cela devrait fonctionner.

1
Jeremiah

Un peu tard, mais je viens d'avoir ce problème où l'ajout d'un terme de taxonomie a fonctionné, mais l'ajout de méta-post n'était pas. La solution consistait à définir une priorité plus élevée. La priorité par défaut est 10, alors essayez par exemple la priorité 100:

add_action( 'save_post_dealer', 'save_dealer_long_lat', 100, 1);
1
yezzz