web-dev-qa-db-fra.com

Ajouter post meta basé sur une autre post meta value avant publication post

Je souhaite ajouter une méta-valeur à mon message, qui sera basée sur une autre méta-valeur, avant la publication du message. C'est ce que j'ai essayé

add_action('save_post_my_custom_post', 'add_custom_field_automatically' );
function add_custom_field_automatically($post_ID) { 

    $new_meta_value = get_post_meta($post_ID,'_my_meta_key',TRUE).'to ' .' something new';

    add_post_meta($post_ID, '_my_new_meta_key', $new_meta_value, true);
}

Mais ça ne marche pas. Le crochet a tiré correctement, il n'enregistre que "quelque chose de nouveau", mais je m'attends à ce que la valeur soit "ma méta valeur à quelque chose de nouveau"

2

La solution utilise added_post_meta et updated_post_meta hook.

Voici le code de travail.

add_action( 'added_post_meta', 'add_custom_field_automatically', 10, 4 );
add_action( 'updated_post_meta', 'add_custom_field_automatically', 10, 4 );
function add_custom_field_automatically( $meta_id, $post_id, $meta_key, $meta_value )
{
    if ( '_my_meta_key' == $meta_key ) {

        add_post_meta($post_id, '_my_new_meta_key', $meta_value.'to something new', true);
    }
}
2