wp_set_post_terms

Устанавливает термины (рубрики) для записи (поста).

Хуков нет.

Возвращает

Массив/false/WP_Error.
false, если $post_id не число или равно 0, в остальных случаях – массив ID которые были задействованы или объект WP_Error.

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

wp_set_post_terms( $post_ID, $tags, $taxonomy, $append );
$post_ID(число) (обязательный)
ID поста.
$tags(строка/число/массив)

Список элементов таксономии в виде массива или в строке через запятую.

Если таксономия древовидная тут можно указывать только ID терминов! В этом случае, названия или ярлыки, будут превращены в числа – в ноль…

Функция создаст новый термин, если не найдет подходящий.

  • Если указать название (в кириллице), то функция создаст термин. При этом: название будет названием, слаг слагом (обработается как обычно).
Важно: если передается ID, или массив из ID, то убедитесь, что переменные передаются как числа, а не как строки! Потому что строки в виде числа, например, ’98’ будут интерпретироваться как название термина, а не его ID!

По умолчанию: ”

$taxonomy(строка)
Название таксономии, к элементам которой прикреплять запись(и).
По умолчанию: post_tag
$append(логический)
Добавить к существующим или заменить термины:
true — будут добавлены к существующим;
false — будут заменены.
По умолчанию: false

Примеры

1. Категории и метки по умолчанию

Нижеследующий пример кода, который можно вставить в functions.php для того, чтобы при сохранении поста ему указывалась рубрика (название рубрики) и метка (название метки) по умолчанию, если такие метка/рубрика еще не указаны:

add_action( 'wp_insert_post', 'update_post_terms' );
function update_post_terms( $post_id ) {
	if ( $parent = wp_is_post_revision( $post_id ) )
		$post_id = $parent;

	$post = get_post( $post_id );

	if ( $post->post_type != 'post' )
		return;

	// добавим метку по умолчанию
	wp_set_post_terms( $post_id, 'название метки', 'post_tag', true );

	// добавим категорию по умолчанию
	$categories = wp_get_post_categories( $post_id );
	$newcat    = get_term_by( 'name', 'название рубрики', 'category' );
	array_push( $categories, $newcat->term_id );

	wp_set_post_categories( $post_id, $categories );
}

Заметки

Для древовидных терминов нужно передавать ID термина а не название, а то может возникнуть конфликт названий: могут быть одинаковые названия терминов в разных ветках.

ID термина можно посмотреть в админке (в ссылке) или получить так:

$term_id = term_exists($term, $taxonomy, $parent )['term_id'];

Код из


wp-includes/post.php

WP 4.7.2

<?php
function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
	$post_id = (int) $post_id;

	if ( !$post_id )
		return false;

	if ( empty($tags) )
		$tags = array();

	if ( ! is_array( $tags ) ) {
		$comma = _x( ',', 'tag delimiter' );
		if ( ',' !== $comma )
			$tags = str_replace( $comma, ',', $tags );
		$tags = explode( ',', trim( $tags, " ntr              

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *