wp_set_object_termsがうまく動かない場合の対処方法

wp_set_object_termsがうまく動かない場合の対処方法

「wp_set_object_terms」がうまく動かなかった場合の対処方法です。

「wp_insert_post」と一緒に使用する際は問題なく動くと思います。

今回問題が発生したのは以下のパターンです。

function sample_function() {

  foreach ( $results as $result ) {
    wp_set_object_terms( $result['post_id'], $result['name'], 'genre', false );
  }
}
sample_function();

「functiuons.php」内で繰り返し「wp_set_object_terms」を使用してタームの書き換えを行おうとしていました。

しかし、エラーも出ず、タームも変更されませんでした。

そのような場合の解決策が以下です。

function sample_function() {

  foreach ( $results as $result ) {
    wp_set_object_terms( $result['post_id'], $result['name'], 'genre', false );
  }
}
add_action( 'init', 'sample_function', 20 );

先程の実行方法とは違い「init」にアクションフックしています。

さらに優先度をデフォルトが「10」のところを「20」に下げています。

この優先度を下げることが重要なようです。

他の部分に問題がなければおそらく上記のように優先度を下げることで解決できると思います。