web-dev-qa-db-fra.com

Mise à jour de l'article à l'aide de wp_update_post

Je crée un type de publication personnalisé pour une page de contacts pour un site Web client comportant des méta-champs pour le nom et le nom de famille, mais je souhaite également mettre à jour le titre des publications personnalisées afin qu'il soit une combinaison des deux (c'est-à-dire "prénom nom de famille").

J'utilise wp_update_post pour le faire, mais je rencontre un problème. Lorsque je vais mettre à jour un message, les données sont mises à jour correctement, mais mon curseur tourne continuellement et la page ne se recharge jamais. Je suppose que cela est dû au fait que wp_update_post provoque une boucle infinie save_post, mais le correctif recommandé pour cela sur le codex wordpress ne semble pas fonctionner et je suppose qu'il y a un problème avec la façon dont j'appelle une ou plusieurs fonctions. .

Voici mon code:

add_action('save_post', 'save_details');
add_action('edit_post', 'save_details');

function save_details($post_id){
  global $post;

      if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
              return $post_id;
      }

        update_post_meta($post->ID, "firstname", $_POST["firstname"]);
        update_post_meta($post->ID, "lastname", $_POST["lastname"]);

        if ( ! wp_is_post_revision( $post_id ) ){

            $args = array();
                $args['ID'] = $post_id;
                $args['post_title' ] = implode(' ', array($_POST["firstname"],$_POST["lastname"]));

            remove_action('save_details','save_post');
                wp_update_post( $args );
            add_action('save_details','save_post');
    }

}   
2
James Jackson

les paramètres pour remove_action sont incorrects, ils devraient être exactement les mêmes paramètres que ceux que vous avez utilisés dans add_action, d'abord le hook, puis le nom de la fonction remove_action('save_post','save_details');

0
Mark Kaplun