Vous trouverez ci-dessous le code de mise à jour post-méta.
function changePostExpireDatetime( $post ){
$featurePlanID = get_post_meta($post->ID, 'post_price_plan_id', true );
remove_action('pending_to_publish', 'changePostExpireDatetime', 10, 1);
$plan_price = get_post_meta($featurePlanID, 'plan_price', true);
update_post_meta($post->ID, 'post_plan_price', $plan_price );
update_post_meta($post->ID, 'featured_post', "1" );
add_action('pending_to_publish', 'changePostExpireDatetime', 10, 1);
}
add_action('pending_to_publish', 'changePostExpireDatetime', 10, 1);
La fonction est appelée mais la méta n'a pas été mise à jour. Comment puis-je mettre à jour post meta dans ce crochet.
J'ai tendance à utiliser le crochet transition_post_status
car il vous donne un contrôle considérable sur ce que vous devez faire. Assurez-vous de vérifier le lien pour toutes les options de statut disponibles. Ce que j’aime particulièrement, c’est que l’objet $post
soit également transmis à l’accroche, de sorte que vous pouvez également cibler un type de publication spécifique.
Vous pouvez essayer quelque chose comme ce qui suit: ( Assurez-vous simplement de mettre à jour les valeurs, car je viens d’utiliser le mien comme exemple )
add_action( 'transition_post_status', function ( $new_status, $old_status, $post )
{
// Check if we are transitioning from pending to publish
if ( $old_status == 'pending' && $new_status == 'publish' ) {
// Check whether or not the meta_key exists already with our value
if ( ! add_post_meta( $post->ID, 'post_views_count', 50, true ) ) {
update_post_meta ( $post->ID, 'post_views_count', 50 );
}
}
}, 10, 3 );