[WordPress] カテゴリー・タグ・カスタムタクソノミーを外部から登録・編集する

公開

スポンサーリンク

外部のプログラムからWordPressに投稿を行うにはwp_insert_post()を使います。それと同じように、カテゴリーやタグ、カスタムタクソノミーも外部から登録・編集することを可能とする関数が用意されています。登録にはwp_insert_term()、更新にはwp_update_term()を使います。以下はwp_insert_term()並びにwp_update_term()を使ったタクソノミーの操作手順の覚書です。

以下はWordPressを設置したディレクトリの上の階層に、タクソノミー操作プログラムを設置したという前提のコードです。

operation-taxonomy.php //タクソノミー操作プログラム
wordpress //WordPressをインストールしたフォルダ
  wp-blog-header.php
  //以下略

イメージとしてはこんな感じ。

operation-taxonomy.phpで外部からタクソノミーの編集を行います。例えばカテゴリー「日記」のデスクリプションを編集するなら、以下のようなコードになるでしょうか。

//WordPress Load
require('../wordpress/wp-blog-header.php');

$taxonomy_type = $_POST['taxonomy_type'];//categoryやtag, カスタムタクソノミー名を指定
$taxonomy_name = $_POST['taxonomy_name'];//新規登録、又は更新したいタクソノミー名
$taxonomy_description = $_POST['taxonomy_description'];

//項目名を元にterm_idを取得
$terms = get_term_by("name", $taxonomy_name, $taxonomy_type);

//まだ存在しない場合はfalseなので、
!$terms ?
  //存在しなければ新規登録
  wp_insert_term($taxonomy_name, $taxonomy_type, array("description"=>$taxonomy_description) ):
  //存在するならUpdate
  wp_update_term($terms->term_id, $taxonomy_type, array("description"=>$taxonomy_description) );

タクソノミーのアップデートにはterm_idが必要なので、get_term_by()でタクソノミー名を元にterm_idを取得します。

そのタクソノミーが未登録のものだった場合、返り値はnullなので、wp_insert_term()で新規登録、nullでなければwp_update_term()でアップデートしています。

スポンサーリンク


Comment