Позволяет имзенить занчение по умолчанию для метаполя поста, термина, юзара, комментариев.
Динамическая часть имени хука, (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 | Введена. |
Где вызывается хук
default_(meta_type)_metadata
$value = apply_filters( "default_{$meta_type}_metadata", $value, $object_id, $meta_key, $single, $meta_type );