wp_delete_object_term_relationships()


WordPressのwp_delete_object_term_relationships()関数は、指定されたオブジェクト(投稿やカスタム投稿タイプなど)とターム(カテゴリーやタグなど)の関連を削除するために使用されます。

構文

wp_delete_object_term_relationships( int|array $object_ids, string|array $taxonomies );

引数の説明:

  • $object_ids (int|array) — タームとの関連を削除するオブジェクトのIDまたはIDの配列。
  • $taxonomies (string|array) — 削除するタームのタクソノミー名またはタクソノミー名の配列。

例1: 特定の投稿からすべてのカテゴリーを削除

この例では、IDが5の投稿からすべてのカテゴリーを削除します。

wp_delete_object_term_relationships(5, 'category');

例2: 複数の投稿から特定のタグを削除

この例では、IDが10と15の投稿から「news」タグを削除します。

wp_delete_object_term_relationships(array(10, 15), 'post_tag');

例3: カスタム投稿タイプからタクソノミーを削除

この例では、IDが20のカスタム投稿タイプから「genre」タクソノミーを削除します。

wp_delete_object_term_relationships(20, 'genre');

例4: 複数のタクソノミーを一度に削除

この例では、IDが25の投稿から「category」と「post_tag」の両方を削除します。

wp_delete_object_term_relationships(25, array('category', 'post_tag'));

例5: すべての投稿から特定のタクソノミーを削除

この例では、すべての投稿から「genre」タクソノミーを削除します。

$all_posts = get_posts(array('numberposts' => -1)); foreach($all_posts as $post) { wp_delete_object_term_relationships($post->ID, 'genre'); }

例6: 特定のカスタムフィールドを持つ投稿からタクソノミーを削除

この例では、カスタムフィールド「special」が「yes」の投稿から「featured」タクソノミーを削除します。

$special_posts = get_posts(array('meta_key' => 'special', 'meta_value' => 'yes', 'numberposts' => -1)); foreach($special_posts as $post) { wp_delete_object_term_relationships($post->ID, 'featured'); }

例7: 特定のユーザーの投稿からタクソノミーを削除

この例では、ユーザーIDが3のユーザーが投稿したすべての投稿から「category」を削除します。

$user_posts = get_posts(array('author' => 3, 'numberposts' => -1)); foreach($user_posts as $post) { wp_delete_object_term_relationships($post->ID, 'category'); }

例8: 特定の日付以前の投稿からタクソノミーを削除

この例では、2022年1月1日以前に投稿されたすべての投稿から「old」タクソノミーを削除します。

$old_posts = get_posts(array('date_query' => array(array('before' => '2022-01-01')), 'numberposts' => -1)); foreach($old_posts as $post) { wp_delete_object_term_relationships($post->ID, 'old'); }

注意点

  • この関数はデータベースから直接関連を削除するため、操作前にバックアップを取ることを推奨します。
  • タームの関連を削除すると、そのタームが他のオブジェクトに関連していない場合、ターム自体が削除されることがあります。

関連機能: