WordPress | PHPからカテゴリを作成・追加する方法

2023-06-25WP REST API,WordPress

WordPress | PHPからカテゴリを作成・追加する方法

WordPressでphpからカテゴリを作成・追加する方法になります。

WP REST APIで記事を投稿する際に、存在しないカテゴリを指定した場合でもカテゴリを追加させる手段として使えますね。

カテゴリを追加するWordPress関数にはwp_insert_category()wp_create_category()があります。

関数機能
wp_insert_category()スラッグ名や説明文を指定可能なオプションがあります。
wp_create_category()指定可能なオプションは親カテゴリのみですが、簡易的に記述できます。

内部的にはwp_create_category()の中でwp_insert_category()が呼び出されているようです。

wp_insert_category()でカテゴリを追加する方法

wp_insert_category()は必要なパラメータを配列で指定して、実行します。返り値は成功時であれば新らしく作られたカテゴリID、失敗時は0が返ってきます。

wp_insert_category()で指定可能なパラメータ

パラメータ
cat_nameカテゴリ名(必須)
category_description説明文
category_nicenameスラッグ名
category_parent親カテゴリID

説明文・親カテゴリIDが未指定の場合は空白となり、スラッグ名が未指定の場合はカテゴリ名がスラッグ名として登録されます。

wp_insert_category()のサンプルコード

require_once( './wp-admin/includes/taxonomy.php' );
$args = array(
	'cat_name' => 'カテゴリ名',
	'category_description' => '説明文',
	'category_nicename' => 'スラッグ名',
	'category_parent' => '親カテゴリID');

$new_id = wp_insert_category( $args );

カテゴリが無ければ作成するサンプルコード

カテゴリ名からget_cat_ID()でカテゴリIDを取得、get_cat_ID()はカテゴリが存在しない場合に0を返すので0かどうかで判別してwp_insert_category()を実行します。

$cat_name = 'カテゴリ名';
$cat_id = get_cat_ID( $cat_name );

if($cat_id != 0 || !$cat_id) {
	require_once( './wp-admin/includes/taxonomy.php' );
	$args = array(
		'cat_name' => $cat_name,
		'category_description' => '',
		'category_nicename' => '',
		'category_parent' => '');
	
	$cat_id = wp_insert_category( $args );
}

参考:関数リファレンス/wp insert category – WordPress Codex 日本語版

wp_create_category()でカテゴリを追加する方法

wp_create_category()wp_insert_category()より指定できるパラメータが少ない代わりに短いコードで実行できるWordPress関数です。返り値は成功時であれば新らしく作られたカテゴリID、失敗時は0が返ってきます。

wp_create_category()で指定可能なパラメータ

第一引数カテゴリ名(必須)
第二引数親カテゴリID

wp_create_category()のサンプルコード

require_once( './wp-admin/includes/taxonomy.php' );
$new_id = wp_create_category( 'カテゴリ名', '親カテゴリID' );

カテゴリが無ければ作成するサンプルコード

$cat_name = 'カテゴリ名';
$cat_id = get_cat_ID( $cat_name );

if($cat_id != 0 || !$cat_id) {
	require_once( './wp-admin/includes/taxonomy.php' );
	$cat_id = wp_create_category( $cat_name );
}

参考:関数リファレンス/wp create category – WordPress Codex 日本語版

WP REST APIで記事を作成する際にカテゴリを用意しておくのが面倒だったので、利用する事にしました。wp_insert_category()はスラッグ名もですが説明文や親カテゴリIDも指定できるのは便利ですね。