создание категорий программно

Я создаю пакетный загрузчик, и было бы неплохо, если бы я мог добавлять категории с родительскими категориями к моим сообщениям.

У меня есть следующий код:

$my_cat = array( 'cat_name' => $cat_name, 'category_description' => $cat_desc, 'category_nicename' => $cat_slug, 'category_parent' => $cat_parent); if(function_exists('wp_insert_category')){ $my_cat_id = wp_insert_category($my_cat); }elseif(function_exists('wp_create_category')){ $my_cat_id = wp_create_category($cat_name,$cat_parent); }elseif(function_exists('wp_insert_term')){ $parent_term = term_exists( $cat_name, $cat_parent ); $parent_term_id = $parent_term['term_id']; $var = wp_insert_term($cat_name,$cat_parent); if ( is_wp_error($var) ){ echo $var->get_error_message(); echo " Category ";var_dump($cat_name);echo" failed to be created "; } 

как $ cat_name, так и $ cat_parent всегда действительны с некоторым значением, и $ cat_parent существует всегда до создания $ cat_name.

но всегда все, что я получаю, это

Недействительная таксономия

это означает, что последний elseif работает.

Я запускаю этот код из файла functions.php темы

У меня есть 2 вопроса:

во-первых: почему не работает ни один из первых двух случаев, если они выполняются? (Если я удалю проверку if exists, он сообщает, что функция не существует)

второй: почему третий не будет работать?

Solutions Collecting From Web of "создание категорий программно"

wp_insert_category и wp_create_category находятся в wp-admin / includes / taxonomy.php. Они не являются универсальными функциями и не могут использоваться нигде . wp_insert_term есть, но вы используете его неправильно. Более подробную информацию о правильном использовании см. В Codex , но, короче говоря, вот чит-лист:

 wp_insert_term( $term, $taxonomy, $args = array() ); ... $defaults = array( 'alias_of' => '', 'description' => '', 'parent' => 0, 'slug' => ''); 

Я верю, что вы хотите изменить свой код, чтобы сказать,

 $var = wp_insert_term( $cat_name, 'category', array( 'parent' => $parent_term_id ) );