wp_insert_term

説明

mixed wp_insert_term( string $term, string $taxonomy [ , mixed $args = array() ] )
ターム(カテゴリや投稿タグ)を登録する。

パラメータ

  • $term
    ターム名を指定。
  • $taxonomy
    'category'や'post-tag'などのタクソノミー名を指定。
  • $args
    付加情報を連想配列または文字列で指定(省略時はarray())。連想配列の要素は次の通り。
    キー名内容省略時の値
    'alias_of'グループ用''
    'description'説明''
    'parent'親ターム(カテゴリ)のID(親がない場合は0)0
    'slug'スラッグ''

返り値

タームが登録できた場合は'term_id'と'term_taxonomy_id'を要素に持つ連想配列を、登録できなかった場合は WP_Errorオブジェクトを返す。

[5.1.0]重複するターム情報が見つかった場合は、先に登録されていたターム情報の'term_id'と'term_taxonomy_id'を要素に持つ連想配列を返す。


注意

パラメータ$argsを省略した場合、付加情報は次のようになる。

array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => '')

使用例

  • 投稿タグ'新商品'を登録する。
    <?php wp_insert_term( '新商品', 'post_tag' ); ?>
  • 小カテゴリ'トマト'を登録する(親カテゴリのIDは10)。
    <?php wp_insert_term( 'トマト', 'category', array( 'slug'=>'tomato', 'parent'=>10 ) ); ?>

フィルター

[3.0.0]タクソノミーの存在を確認後、'term_id_filter'フィルターを呼び出す。パラメータ$term$taxonomyには本関数が受け取った内容が格納されている。
$term = apply_filters( 'pre_insert_term', $term, $taxonomy );
[4.7.0]ターム情報を登録する前に'wp_insert_term_data'フィルターが呼び出す。パラメータ$dataにはターム情報(連想配列)が、$taxonomyにはタクソノミー名が、$argsには本関数が受け取った内容にデフォルト値がマージされたものが格納されている。
$data = apply_filters( 'wp_insert_term_data', $data, $taxonomy, $args );
[5.1.0]ターム情報を登録した後に'wp_insert_term_duplicate_term_check'フィルターを呼び出す。パラメータ$duplicate_termには重複するターム情報がある場合はそれが格納されており、このフィルターの返り値がそのまま(空以外)の場合は、本関数の呼び出しで登録したターム情報は削除される。パラメータ$termおよび $taxonomyには本館数が受け取った内容が、$argsには本関数が受け取った内容にデフォルト値がマージされたものが、$tt_idにはタームタクソノミー情報のIDが格納されている。
$duplicate_term = apply_filters( 'wp_insert_term_duplicate_term_check', $duplicate_term, $term, $taxonomy, $args, $tt_id );
[2.3.0]タームの登録後("create_{$taxonomy}"アクションの実行後)に'term_id_filter'フィルターを呼び出す。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが格納されている。
$term_id = apply_filters( 'term_id_filter', $term_id, $tt_id );

アクション

ターム情報の更新直前に'edit_terms'アクションを実行する。パラメータ$term_idにはターム情報のIDが格納されている。
do_action( 'edit_terms', $term_id );
ターム情報の更新直後に'edited_terms'アクションを実行する。パラメータ$term_idにはターム情報のIDが格納されている。
do_action( 'edited_terms', $term_id );
[2.3.0]タクソノミー情報の追加後に"create_term"アクションを実行する。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが、$taxonomyにはタクソノミー名が格納されている。
do_action( "create_term", $term_id, $tt_id, $taxonomy );
[2.3.0]タクソノミー情報の追加後に"create_{$taxonomy}"アクションを実行する($taxonomyは'category'や'post_tag'など)。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが格納されている。
do_action( "create_{$taxonomy}", $term_id, $tt_id );
[2.3.0]キャッシュクリア後(返り値を返す直前)に"created_term"アクションを実行する。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが、$taxonomyにはタクソノミー名が格納されている。
do_action( "created_term", $term_id, $tt_id, $taxonomy );
[2.3.0]キャッシュクリア後(返り値を返す直前)に"created_{$taxonomy}"アクションを実行する($taxonomyは'category'や'post_tag'など)。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが格納されている。
do_action( "created_{$taxonomy}", $term_id, $tt_id );
[5.5.0]"created_{$taxonomy}"アクションの後に'saved_term'アクションを実行する。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが、$taxonomyにはタクソノミー名が、$updateにはfalseが格納されている。
do_action( 'saved_term', $term_id, $tt_id, $taxonomy, $update );
[5.5.0]'saved_term'アクションの後に"saved_{$taxonomy}"アクションを実行する($taxonomyは'category'や'post_tag'など)。パラメータ$term_idにはターム情報のIDが、$tt_idにはタームタクソノミー情報のIDが、$updateにはfalseが格納されている。
do_action( "saved_{$taxonomy}", $term_id, $tt_id, $update );

ソースファイル

/wp-includes/taxonomy.php

最終更新 : 2020年08月31日 11:27



お勧め

プラグインのロード順を制御する(2014年6月9日 更新)

これまでプラグインがどのような順番でロードされるか意識していなかったのだが、とある自作プラグインを他のプラグインよりも先にロードさせたくなったので調べてみた。

Emojin:プラグイン作ってみました(2015年3月21日 更新)

ちょっと前のTLでiOSの絵文字を含んだ投稿を保存すると、絵文字以降の文章がすべて消えた状態で保存されるといったツイートを見かけた。少し検索してみると、MySQLのデータベースの文字セットが「utf8」の場合、iOSの絵文字のような4バイトの文字を正常に保存できず、それ以降の文章も保存されないというものらしい。対処方法としてデータベースの文字セットを「utf8mb4」に変更するのが有効らしいのだが、他に回避策がないか考えてみた。

Contact Form 7に確認フェーズを(2012年12月16日 更新)

Contact Form 7はWordPressによるサイト製作でお世話になることが多いプラグインの1つ。ただ、クライアント様によっては、入力、確認、送信の3フェーズにしたいという要望があり、そんな時は別の方法を採用していたのですが、JavaScript(jQuery)を使ってページ遷移しなくてもいいなら確認フェーズは用意できるかなと思い、作り込んでみた。

プラグインのヘッダー情報を国際化対応しよう(2018年5月27日 更新)

バージョン4.8がリリースされてひと段落。あらためてプラグイン一覧ページを見てみると「Akismet」が「Akismet Anti-Spam (アンチスパム)」と表示されていた。説明文だけじゃなくプラグイン名も国際化対応できたのね。

メタボックスをクラシックエディターのみで表示する(2019年1月15日 更新)

投稿画面向けにメタボックスを使ったプラグインがあり、それがブロックエディターで意図した通りに機能しなかった。この対処方法を考える過程でエディタータイプに応じてメタボックスを出し分けできる方法が見つかったので紹介したい。