default_(meta_type)_metadata │ хук-фильтр │ WP 5.5.0

Click here to view original web page at wp-kama.ru

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

Динамическая часть имени хука, (meta_type) - это название типа объекта метаполя. Т.е. этот хук может иметь следующие названия:

  • default_post_metadata
  • default_comment_metadata
  • default_term_metadata
  • default_user_metadata

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

add_filter( 'default_(meta_type)_metadata', 'wp_kama_default_meta_type_metadata_filter', 10, 5 );

/**
 * Function for `default_(meta_type)_metadata` filter-hook.
 * 
 * @param mixed  $value     The value to return, either a single metadata value or an array of values depending on the value of `$single`.
 * @param int    $object_id ID of the object metadata is for.
 * @param string $meta_key  Metadata key.
 * @param bool   $single    Whether to return only the first value of the specified `$meta_key`.
 * @param string $meta_type Type of object metadata is for. Accepts 'post', 'comment', 'term', 'user', or any other object type with an associated meta table.
 *
 * @return mixed
 */
function wp_kama_default_meta_type_metadata_filter( $value, $object_id, $meta_key, $single, $meta_type ){

	// filter...
	return $value;
}
$value(разное)
Дефолтное значение, которое нужнов ернуть. Может быть строкой или массивом, зависит от параметра $single.
$object_id(int)
ID объекта метаданных: ID поста, термина, комменатрия, юзера.
$meta_key(string)
Навзание метаполя (ключ метаполя).
$single(true|false)
Как было запрошено получение значений. См. аналогичный параметр в функции get_post_meta().
$meta_type(строка)
Тип объекта к которому принадлежит метаполе. Может быть: post, comment, term, user, или любой другой тип, если вы создавали поля для произвольной таблицы.

Примеры

#1 Укажем дефолтное значение просмотров, когда у поста еще нет просмотров

Допустим кол-во просмотров поста храниться в метаполе views и мы хотим чтобы, когда у поста еще нет ни одного просмотра, выводить какое-то число, а не 0. Чтобы подогреть интерес читателей к статье.

Но при этом мы не хотим реально изменять значение поля views, т.е. если просмотры есть, то выодятся они, если их вообще нет, то выводить например 10.

Мы можем тут использвоать рандомное число, чтобы у вех постов не было одинакового кол-ва просмотров, но тогда это число всегда будет меняться - этого нам тоже не нужно. Поэтому давайте возьмем две последние цифры ID поста и будем выдавать их за кол-во просмотров.

# Укажем дефолтное значение просмотров, когда у поста еще нет просмотров
add_filter( 'default_post_metadata', 'default_post_views_meta_value', 10, 5 );

function default_post_views_meta_value( $value, $object_id, $meta_key, $single, $meta_type ){

	if( 'views' === $meta_key && 'post' === $meta_type ){

		// if 00 show 10
		$value = (int) substr( $object_id, -2 ) ?: 10;
	}

	return $value;
}

Список изменений

С версии 5.5.0Введена.

Где вызывается хук

get_metadata_default()

default_(meta_type)_metadata

wp-includes/meta.php 715

$value = apply_filters( "default_{$meta_type}_metadata", $value, $object_id, $meta_key, $single, $meta_type );

Где используется хук в WordPress