質問: wp_set_object_termsはrevisionとの関係を築きますか? カスタムの投稿タイプ、「アルバム」があります。それは分類法、 'album_artist'です。私は、save_postにフックされた関数の中でwp_set_object_termsを使用して、その分類法にアーティストをプログラム的に追加しようとしています。function get_album_data($post_id) { // code removed for brevity: import data from external source, parse vars wp_set_object_terms( $post_id, $album_artist_name, 'album_artist', true ); update_post_meta ($post_id, 'release date', $release); } add_action( 'save_post', 'get_album_data', 1001 ); 私は、コンピレーションアルバムに複数のアーティストがいる場合に「true」を使用しています(「21 original hits 21 original stars」と考えてください)。dbのwp_terms、wp_term_relationships、およびwp_term_taxonomyテーブルを調べてみると、次のようになります。 wp_termsでは、用語は正しいスラッグで正しく作成されています(すなわち、 "the police"は警察のスラッグを取得し、term_idは482です)。 wp_term_taxonomyでは、用語は正しい分類法の下に表示されています(すなわち、term_taxonomy_id 506は、album_artistの分類法でterm_id 482を持っています)。 wp_term_relationshipsでは、term_taxonomy_id 506はobject_id 2448で表示されます よさそうですね。悲しいことに、いいえ。 object_id 2448はpost 2448を参照するため、これは実際には2447の改訂です。また、wp_postmetaテーブルをチェックすると、 'release_date'メタは2448ではなく2447で更新されています。そのためwpは間違った投稿との関係を築いているようです。だからこそ、私は「artist」メタボックスに入って「the police」と書かれたチェックボックスをクリックしても、アーティストがアルバムページに表示されないのではないかと思います。それでも、update_post_metaとwp_set_object_termsでは、$ post_id変数の扱いが異なるようです。 2つのステートメントは文字通り関数内で互いに隣接しているので、$ post_id変数は関数ごとに意味が異なります。改訂ではなく、wpに用語とparentの間の関係を強制するにはどうすればよいですか。
回答: wp_is_post_revision() 関数がpostがリビジョンでない場合はfalseを与える(この場合は通常どおり動作する)または実際に使用するポストidを使用するリビジョン.