質問: $book_data[0]; // fill in author tag with amazon data if missing if ( ! has_term( $book_data[1], 'author', $postarr['id'] ) ) { wp_set_object_terms( $postarr['id'], $book_data[1], 'author' ); } return $data; } }
回答: それで、私自身の質問に答えるために:wp_insert_post_data内に解決策が見つかりませんでした。私は問題がwp_insert_post_dataが実行されるとき問題のポストがまだデータベースにないという事実に関連していると思う。 taxonomy.phpで見つけられなかったにもかかわらず、wp_set_post_terms関数には、任意の/存在しない投稿idとの単語関係の挿入を避けるための何らかのチェックメカニズムがあると仮定するのは論理的です。とにかく、wp_insert_post_dataでは、(ローカルに追加するのではなく)追加する必要がある課税期間を格納するためのグローバル変数を定義しました。それから、投稿が保存された後に実行されるsave_postにフックして、そこから用語を取得/挿入しました。ちょうどうまく動作するようです。wp_insert_post_dataの関連コード部分... // fill in author tag with amazon data if missing if ( ! has_term( $book_data[1], 'author', $postarr['id'] ) ) { global $add_this_tax_term_to_book; $add_this_tax_term_to_book[] = $book_data[1]; $add_this_tax_term_to_book[] = 'author'; } ... そしてsave_postのコード:add_action('save_post', 'add_my_tax_term'); function add_my_tax_term( $post_id ) { global $add_this_tax_term_to_book; if ( !(empty( $add_this_tax_term_to_book )) ) { wp_set_object_terms( $post_id, $add_this_tax_term_to_book[0], $add_this_tax_term_to_book[1] ); }