wp_set_post_categories() WP 2.1.0

Встановлює категорії для посту.

Якщо параметр рубрик не встановлено, пост буде прив’язаний до стандартної рубрики.

При використанні цієї функції всі старі категорії посту будуть видалені та встановлені зазначені.

Працює на основі:
wp_set_post_terms()

Хуки з функції

Повертає

Массив|false|WP_Error. ідентифікатори – масив ID термінів, які були додані/прикріплені до запису або об’єкта WP_Error.

Використання

<?php wp_set_post_categories( $post_ID, $post_categories, $append ) ?>
$post_ID
(число)
ID посту, який будемо прикріплювати до категорій.
$post_categories
(масив)
Список ID категорій, до яких прикріпити пост.


За замовчуванням: array()
$append
(логічний)
true – додати до існуючих рубрик. false – повністю оновити рубрики (видалити з існуючих та додати до зазначених).


Типово: false

Приклади

0

#1 Програмно перемістимо пост з однієї категорії до іншої:

Зверніть увагу, що якщо ми не поставимо третій параметр, то за умовчанням він буде false, тобто категорії будуть замінюватися, а не додаватися.

wp_set_post_categories( $post_id, array( 1 ) );

список змін

З версії 2.1.0Введено.

Код wp_set_post_categories() WP 6.0.2

function wp_set_post_categories( $post_ID = 0, $post_categories = array(), $append = false ) {
	$post_ID = (int) $post_ID;
	$post_type = get_post_type( $post_ID );
	$post_status = get_post_status($post_ID);

	// If $post_categories isn't already an array, make it one.
	$post_categories = (array) $post_categories;

	if ( empty( $post_categories ) ) {
		/**
		 * Filters post types (in addition to 'post') що потребує default category.
		 *
		 * @ Since 5.5.0
		 *
		 * @param string[] $post_types На array of post type names. Default empty array.
		 */
		$default_category_post_types = apply_filters( 'default_category_post_types', array() );

		// Regular posts always require a default category.
		$default_category_post_types = array_merge( $default_category_post_types, array( 'post' ) );

		if ( in_array( $post_type, $default_category_post_types, true )
			&& is_object_in_taxonomy( $post_type, 'category' )
			&& 'auto-draft' !== $post_status
		) {
			$post_categories = array( get_option( 'default_category' ) );
			$append = false;
		} else {
			$post_categories = array();
		}
	} elseif ( 1 === count( $post_categories ) && '' === reset( $post_categories ) ) {
		return true;
	}

	return wp_set_post_terms( $post_ID, $post_categories, 'category', $append );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *