概要
wp_set_post_terms関数は、指定された投稿(ポスト)に対してターム(カテゴリやタグなど)を設定するために使用されます。この関数は、投稿情報にタームを設定することで、コンテンツの整理や分類を助け、サイト全体のナビゲーションや検索機能を向上させることができます。具体的には、以下のような機能を実装する際によく使われます:
- 投稿に特定のカテゴリを設定する
- 投稿にタグを追加または更新する
- 複数のタームを同時に設定する
- 既存のタームを投稿から削除する
- 投稿を特定のカスタムタクソノミーに関連付ける
- 複数の投稿に同じタームを一括設定する
- タームのスラッグを使用して投稿をフィルタリングする
- タームのIDを数値で取得してプログラム的に設定する
構文
wp_set_post_terms( int $post_id, mixed $terms, string $taxonomy = '', bool $append = false )
パラメータ
$post_id(int) – タームを設定する投稿のID。$terms(mixed) – 設定するタームの名前またはIDの配列。$taxonomy(string) – タームが属するタクソノミーの名前(デフォルトは空)。$append(bool) –trueの場合、既存のタームに新しいタームを追加します(デフォルトはfalse)。
戻り値
- 成功した場合は設定されたタームの配列を返します。失敗した場合は
falseを返します。
関連する関数
使用可能なバージョン
wp_set_post_terms関数は、WordPress 2.3.0以降で使用可能です。
コアファイルのパス
この関数はwp-includes/taxonomy.phpに含まれています。
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | 〇 |
| pre_get_posts | |
| wp | 〇 |
| template_redirect | |
| get_header | |
| wp_head |
非推奨または削除されたバージョン
wp_set_post_terms関数は、特定のバージョンで非推奨または削除されていないため、そのような情報はありません。
サンプルコード
サンプルコード1: タームを投稿に追加
$post_id = 1; // 投稿ID
$terms = ['カテゴリー1', 'カテゴリー2']; // カテゴリ名
$taxonomy = 'category'; // タクソノミーの種類
wp_set_post_terms($post_id, $terms, $taxonomy);
このコードは、IDが1の投稿に「カテゴリー1」と「カテゴリー2」を追加します。
サンプルコード2: タグを設定
$post_id = 2; // 投稿ID
$tags = ['タグ1', 'タグ2']; // タグ名
$taxonomy = 'post_tag'; // タクソノミーの種類
wp_set_post_terms($post_id, $tags, $taxonomy);
このコードは、IDが2の投稿に「タグ1」と「タグ2」を設定します。
サンプルコード3: 存在するタームのIDを使用
$post_id = 3; // 投稿ID
$term_ids = [5, 6]; // タームのID
$taxonomy = 'category'; // タクソノミーの種類
wp_set_post_terms($post_id, $term_ids, $taxonomy);
このコードは、IDが3の投稿にタームID 5と6を関連付けます。
サンプルコード4: タームを上書き
$post_id = 4; // 投稿ID
$terms = ['新しいカテゴリー']; // 新しく設定するカテゴリー名
$taxonomy = 'category'; // タクソノミーの種類
$append = false; // 既存のタームを上書き
wp_set_post_terms($post_id, $terms, $taxonomy, $append);
このコードは、IDが4の投稿のカテゴリを「新しいカテゴリー」に上書きします。
サンプルコード5: 複数の投稿に同じタームを設定
$post_ids = [5, 6, 7]; // 投稿の配列
$terms = '共通のカテゴリー'; // 設定するカテゴリー名
$taxonomy = 'category'; // タクソノミーの種類
foreach ($post_ids as $post_id) {
wp_set_post_terms($post_id, $terms, $taxonomy);
}
このコードは、IDが5、6、7の各投稿に「共通のカテゴリー」を設定します。