web-dev-qa-db-fra.com

Mettre à jour le méta de post en utilisant le hook pending_to_publish

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.

1
Renish Khunt

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 );
2
Pieter Goosen