web-dev-qa-db-ja.com

Wp_update_postを使用して投稿のタイトルを更新する

姓と名の両方のメタフィールドを持つクライアントWebサイトのピープルページのカスタム投稿タイプを作成していますが、カスタム投稿のタイトルを2つの組み合わせ(つまり "firstname")に更新したいと思います。苗字")。

これを行うにはwp_update_postを使用していますが、問題が発生しています。投稿を更新しようとすると、データは正しく更新されますが、カーソルが継続的に回転し、ページが再読み込みされることはありません。これはwp_update_postが無限のsave_postループを引き起こしているためだと思いますが、 wordpress codexでのこの推奨される修正 は機能していないようで、呼び出し方法に問題があると思います。より多くの機能。

これが私のコードです:

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

remove_actionのパラメータが間違っています。 正確に / add_actionで使用したものと同じパラメータで、最初はフック、次に関数名はremove_action('save_post','save_details');です。

0
Mark Kaplun