WP_Term{} WP 4.4.0

Клас ядра, який використовується для отримання елемента таксономії або приведення переданих даних терміна до стандартного об’єкта.

Результат отримання даних із БД кешується.

Основа для:
get_term()

Хуків немає.

Повертає

Об’єкт/WP_Error. Об’єкт елемента таксономії або об’єкт помилки, якщо елемент не вдалося отримати.

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

$term = WP_Term::get_instance( $term_id, $taxonomy );
// або
$ Term = New WP_Term ($ Term);

Властивості класу

Усі властивості класу повертаються об’єкті.

$term_id
(число)
ID терміна.
$name
(рядок)
Назва (заголовок) терміна.


За замовчуванням: ”
$slug
(рядок)
Ярлик терміну.


За замовчуванням: ”
$term_group
(рядок)
Група термін.


За замовчуванням: ”
$term_taxonomy_id
(число)
ID зв’язки терміну та таксономії.


За замовчуванням: 0
$taxonomy
(рядок)
Назва таксономії терміна.


За замовчуванням: ”
$description
(рядок)
Опис терміна.


За замовчуванням: ”
$parent
(число)
ID батьківського елемента терміну.


За замовчуванням: 0
$count
(число)
Кількість записів у цьому терміні. Кешовано.


За замовчуванням: 0
$filter
(рядок)
Назва типу фільтра, через який було прогнано всі дані. Наприклад ‘raw’ – найпростіше очищення даних.


За замовчуванням: ‘raw’

Методи класу

__construct( $term )
Конструктор. $term – об’єкт даних.
get_instance( $term_id, $taxonomy = null )
Отримує об’єкт терміна. Працює із об’єктним кешем.
__get($key)
Отримує неіснуючі властивості. Розуміє лише значення
data. Тобто.
WP_Term::$data – міститиме об’єкт даних терміна.
filter( $filter )
Очищає дані за

допомогою функції
sanitize_term() $filter потрібно вказувати назву типу очищення. Наприклад raw

to_array()
Повертає всі властивості класу як асоціативного масиву.

Приклади

0

#1 Демонстрація роботи

$term = WP_Term::get_instance( 37, 'category' );
/* Отримає
WP_Term Object
(
	[term_id] => 37
	[name] => Кодекс
	[slug] => codex
	[term_group] => 0
	[term_taxonomy_id] => 37
	[taxonomy] => category
	[description] =>
	[parent] => 3
	[count] => 19
	[filter] => raw
)
*/

$term = WP_Term::get_instance( 'codex', 'category' ); //> false
$term = WP_Term::get_instance( 'Кодекс', 'category' ); //> false

список змін

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

Код WP_Term{} WP 6.0.2

final class WP_Term {

	/**
	 * Term ID.
	 *
	 * @ Since 4.4.0
	 * @var int
	 */
	public $term_id;

	/**
	 * The term's name.
	 *
	 * @ Since 4.4.0
	 * @var string
	 */
	public $name = '';

	/**
	 * The term's slug.
	 *
	 * @ Since 4.4.0
	 * @var string
	 */
	public $ slug = '';

	/**
	 * The term's term_group.
	 *
	 * @ Since 4.4.0
	 * @var int
	 */
	public $term_group = '';

	/**
	 * Term Taxonomy ID.
	 *
	 * @ Since 4.4.0
	 * @var int
	 */
	public $term_taxonomy_id = 0;

	/**
	 * The term's taxonomy name.
	 *
	 * @ Since 4.4.0
	 * @var string
	 */
	public $taxonomy = '';

	/**
	 * The term's description.
	 *
	 * @ Since 4.4.0
	 * @var string
	 */
	public $description = '';

	/**
	 * ID of a term's parent term.
	 *
	 * @ Since 4.4.0
	 * @var int
	 */
	public $parent = 0;

	/**
	 * Cached object count for this term.
	 *
	 * @ Since 4.4.0
	 * @var int
	 */
	public $count = 0;

	/**
	 * Stores the term object's sanitization level.
	 *
	 * Does not correspond to database field.
	 *
	 * @ Since 4.4.0
	 * @var string
	 */
	public $filter = 'raw';

	/**
	 * Retrieve WP_Term instance.
	 *
	 * @ Since 4.4.0
	 *
	 * @global wpdb $wpdb WordPress database abstraction object.
	 *
	 * @param int $term_id Term ID.
	 * @param string $taxonomy Optional. Limit matched terms to those matching `$taxonomy`. Only used for
	 * disambiguating потенційно shared terms.
	 * @return WP_Term|WP_Error|false Term object, if found. WP_Error if `$term_id` is shared between taxonomies and
	 * Там є insufficient data до різниці, що терм is intended.
	 * False for інші failures.
	 */
	public static function get_instance( $term_id, $taxonomy = null ) {
		Global $wpdb;

		$term_id = (int) $term_id;
		if ( ! $term_id ) {
			return false;
		}

		$_term = wp_cache_get($term_id, 'terms');

		// If there isn't a cached version, hit the database.
		if ( ! $_term || ( $taxonomy && $taxonomy !== $_term->taxonomy ) ) {
			// Будь-який термін з'явиться в cache є не match, so don't use it.
			$_term = false;

			// Grab all matching terms, в разі будь-якої shared між taxonomies.
			$terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id = % d ", $ term_id)));
			if ( ! $terms ) {
				return false;
			}

			// If a taxonomy був specified, find a match.
			if ($taxonomy) {
				foreach ( $terms as $match ) {
					if ( $taxonomy === $match->taxonomy ) {
						$_term = $ match;
						break;
					}
				}

				// If only one match was found, it's one we want.
			} elseif ( 1 === count( $terms ) ) {
				$_term = reset ($ terms);

				// Інші, терм повинен бути shared між taxonomies.
			} else {
				// If the term is shared only with invalid taxonomies, return the one valid term.
				foreach ( $terms as $t ) {
					if ( ! taxonomy_exists( $t->taxonomy ) ) {
						continue;
					}

					// Тільки виходить, якщо ми визнаємо терм у вірній taxonomy.
					if ($_term) {
						return new WP_Error( 'ambiguous_term_id', __( 'Term ID is shared between multiple taxonomies' ), ​​$term_id );
					}

					$_term = $ t;
				}
			}

			if (! $_term) {
				return false;
			}

			// Не можна відновити терміни від неправильних taxonomies.
			if ( ! taxonomy_exists( $_term->taxonomy ) ) {
				return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
			}

			$_term = sanitize_term($_term, $_term->taxonomy, 'raw');

			// Не вистачає термінів, які є shared між taxonomies.
			if ( 1 === count( $terms ) ) {
				wp_cache_add($term_id, $_term, 'terms');
			}
		}

		$term_obj = новий WP_Term( $_term );
		$term_obj->filter($term_obj->filter);

		return $term_obj;
	}

	/**
	 * Constructor.
	 *
	 * @ Since 4.4.0
	 *
	 * @param WP_Term|object $term Term object.
	 */
	public function __construct( $term ) {
		foreach ( get_object_vars( $term ) as $key => $value ) {
			$this->$key = $value;
		}
	}

	/**
	 * Sanitizes терм fields, враховуючи той тип фільтра, передбачений.
	 *
	 * @ Since 4.4.0
	 *
	 * @param string $filter Filter context. Accepts 'edit', 'db', 'display', 'attribute', 'js', 'rss', or 'raw'.
	 */
	public function filter( $filter ) {
		sanitize_term( $this, $this->taxonomy, $filter );
	}

	/**
	 * Converts an object to array.
	 *
	 * @ Since 4.4.0
	 *
	 * @return array Object as array.
	 */
	public function to_array() {
		return get_object_vars($this);
	}

	/**
	 * Getter.
	 *
	 * @ Since 4.4.0
	 *
	 * @param string $key Property to get.
	 * @return mixed Property value.
	 */
	public function __get( $key ) {
		switch ($key) {
			case 'data':
				$ data = new stdClass();
				$columns = array( 'term_id', 'name', 'slug', 'term_group', 'term_taxonomy_id', 'taxonomy', 'description', 'parent', 'count' );
				foreach ( $columns as $column ) {
					$data->{$column} = isset( $this->{$column} ) ? $this->{$column} : null;
				}

				return sanitize_term( $data, $data->taxonomy, 'raw' );
		}
	}
}

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

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