WordPress как на ладони
wordpress jino

wp_insert_category() WP 2.0.0

Вставляет новую категорию в базу данных. Или обновляет существующую, для этого нужно указать ID категории.

Для добавления категории можно использовать более простую функцию wp_create_category(). В нее нужно передавать только название категории и ID родительской категории.

Используется в: wp_create_category().
Работает на основе: wp_update_term(), wp_insert_term()

Хуков нет.

Возвращает

ID добавленной категории. true, если удалось обновить существующую. false или объект WP_Error, если не удалось обновить/вставить категорию.

Использование

wp_insert_category( $catarr, $wp_error );
$catarr(массив) (обязательный)

Параметры новой категории. Допустимые параметры:

$cat_defaults = array(
  'cat_ID' => 0,                // ID категории, которую нужно обновить. 0 - добавит новую категорию.
  'cat_name' => '',             // название категории. Обязательный.
  'category_description' => '', // описание категории
  'category_nicename' => ,      // слаг категории
  'category_parent' => ,        // ID родительской категории 
  'taxonomy' => 'category'      // таксономия. Измените, чтобы добавить элемент другой таксономии. Например для меток будет post_tag
);

Рекомендуется указывать только необходимые параметры.

$wp_error(логический)
true - вернет объект WP_Error в случает неудачи.
По умолчанию: false

Примеры

#1 Добавление новой категории

Чтобы вставить новую рубрику на сайт, используйте такой код:

$my_cat = array(
	'cat_name' => 'Новая категория',
	'category_description' => 'Описание новой категории',
	'category_nicename' => 'new-cat'
);

// вставляем
$cat_id = wp_insert_category( $my_cat );

if( $cat_id )
	echo 'Категория добавлена';
else
	echo 'Не удалось добавить категорию';

#2 Обновление существующей категории

Обновим имеющуюся категорию с ID=7. Установим ей новое название:

$updated = wp_insert_category( array(
	'cat_ID' => 5,
	'cat_name' => 'Новое название'
) );
if( $updated )
	echo "категория с $updated обновлена";

#3 Добавление элемента таксономии

Функция позволяет добавлять и другие элементы таксономии, не только категории. Давайте добавим метку:

wp_insert_category( array(
	'cat_name' => 'Метка',
	'taxonomy' => 'post_tag'
) );

Заметки

Если появится ошибка Fatal error: Call to undefined function wp_insert_category(). То нужно добавить файл /wp-admin/includes/taxonomy.php:

require_once( ABSPATH . '/wp-admin/includes/taxonomy.php');

wp_insert_category( $catarr, $wp_error );

Код wp insert category: wp-admin/includes/taxonomy.php WP 4.8.2

<?php
function wp_insert_category( $catarr, $wp_error = false ) {
	$cat_defaults = array( 'cat_ID' => 0, 'taxonomy' => 'category', 'cat_name' => '', 'category_description' => '', 'category_nicename' => '', 'category_parent' => '' );
	$catarr = wp_parse_args( $catarr, $cat_defaults );

	if ( trim( $catarr['cat_name'] ) == '' ) {
		if ( ! $wp_error ) {
			return 0;
		} else {
			return new WP_Error( 'cat_name', __( 'You did not enter a category name.' ) );
		}
	}

	$catarr['cat_ID'] = (int) $catarr['cat_ID'];

	// Are we updating or creating?
	$update = ! empty ( $catarr['cat_ID'] );

	$name = $catarr['cat_name'];
	$description = $catarr['category_description'];
	$slug = $catarr['category_nicename'];
	$parent = (int) $catarr['category_parent'];
	if ( $parent < 0 ) {
		$parent = 0;
	}

	if ( empty( $parent )
		|| ! term_exists( $parent, $catarr['taxonomy'] )
		|| ( $catarr['cat_ID'] && term_is_ancestor_of( $catarr['cat_ID'], $parent, $catarr['taxonomy'] ) ) ) {
		$parent = 0;
	}

	$args = compact('name', 'slug', 'parent', 'description');

	if ( $update ) {
		$catarr['cat_ID'] = wp_update_term( $catarr['cat_ID'], $catarr['taxonomy'], $args );
	} else {
		$catarr['cat_ID'] = wp_insert_term( $catarr['cat_name'], $catarr['taxonomy'], $args );
	}

	if ( is_wp_error( $catarr['cat_ID'] ) ) {
		if ( $wp_error ) {
			return $catarr['cat_ID'];
		} else {
			return 0;
		}
	}
	return $catarr['cat_ID']['term_id'];
}

Cвязанные функции

Из метки: term (термины таксономий)

Еще из раздела: Рубрики

wp_insert_category 4 комментария
  • Ильдар cайт: ihakimov.ru

    Вместо cat_ID должно быть cat_id, иначе выдает ошибку Warning: array_merge()

    Ответить2.7 года назад #
    • Kama4464

      О каком параметре идет речь? можете пример показать? В описании функции все верно вроде. unknw

      Ответить2.7 года назад #
  • Олег cайт: studio66.ru

    Как добавлять категорию понятно. А как добавить ее в меню? Есть функция? Два дня на сайте лажу - и ничего не нашел!

    Ответить1.3 года назад #

Здравствуйте, !

Ваш комментарий