Хук is_protected_meta
позволяет управлять тем, какие метаполя будут считаться защищенными или скрытыми в WordPress. Это полезно, когда необходимо скрыть определенные метаполя от пользователя, например, в интерфейсе редактирования записей или комментариев.
apply_filters( ‘is_protected_meta’, bool $protected, string $meta_key, string $meta_type )
Этот фильтр определяет, будет ли конкретное метаполе считаться защищенным. Защищенные метаполя не отображаются в интерфейсе редактирования записи или комментария, и обычно они используются для хранения данных, которые не должны быть изменены или видны пользователю.
По умолчанию метаполя, ключи которых начинаются с символа подчеркивания (_
), считаются защищенными. Хук is_protected_meta
позволяет изменять это поведение для конкретных метаполей, задавая их ключи и типы.
Параметры
- $protected (bool): Флаг, который указывает, считается ли метаполе защищенным.
- $meta_key (string): Ключ метаполя, который проверяется.
- $meta_type (string): Тип объекта, для которого проверяется метаполе. Возможные значения: ‘post’, ‘comment’, ‘term’, ‘user’, или любой другой тип объекта с ассоциированной мета-таблицей.
Пример 1: Сделать определенные метаполя защищенными
Этот пример демонстрирует, как скрыть определенные метаполя, например, ‘post_desc’ и ‘publisher_id’, из интерфейса редактирования записи.
add_filter( 'is_protected_meta', 'my_protected_custom_fields', 10, 2 );
function my_protected_custom_fields( $protected, $meta_key ) {
// Список метаполей, которые нужно скрыть
$hide_meta_keys = array( 'post_desc', 'publisher_id' );
// Если ключ метаполя находится в списке, считаем его защищенным
if( in_array( $meta_key, $hide_meta_keys ) ) {
return true;
}
return $protected;
}
В этом примере метаполя с ключами ‘post_desc’ и ‘publisher_id’ будут скрыты в интерфейсе редактирования записи, поскольку они считаются защищенными.
Пример 2: Сделать несколько метаполей защищенными
Этот пример показывает, как можно сделать несколько метаполей защищенными, добавив их в проверку в фильтре.
function my_meta_is_protected_meta( $protected, $meta_key, $meta_type ) {
// Проверка на определенные метаполя
switch( $meta_key ) {
case 'my_first_meta':
case 'my_second_meta':
$protected = true; // Сделать их защищенными
break;
}
return $protected;
}
add_filter( 'is_protected_meta', 'my_meta_is_protected_meta', 10, 3 );
В этом примере метаполя с ключами ‘my_first_meta’ и ‘my_second_meta’ будут считаться защищенными, независимо от их типажа.
Пример 3: Защита метаполей для определенного типа объектов
Можно также сделать метаполя защищенными только для определенного типа объектов. Например, скрывать метаполя для комментариев, но не для записей:
function my_custom_protected_meta_for_comments( $protected, $meta_key, $meta_type ) {
// Проверяем, что тип объекта - комментарий
if( 'comment' === $meta_type ) {
switch( $meta_key ) {
case 'admin_notes':
case 'user_rating':
$protected = true; // Эти метаполя защищены для комментариев
break;
}
}
return $protected;
}
add_filter( 'is_protected_meta', 'my_custom_protected_meta_for_comments', 10, 3 );
Здесь метаполя ‘admin_notes’ и ‘user_rating’ будут защищены только для объектов типа ‘comment’, но не для других типов, таких как ‘post’ или ‘user’.
Заключение
Хук is_protected_meta
— это мощный инструмент для управления метаполями, которые должны быть скрыты от пользователей в интерфейсе WordPress. Он позволяет фильтровать метаполя по их ключам и типам объектов, определяя, какие из них должны считаться защищенными. Этот хук полезен, когда требуется скрыть специфические данные, такие как пользовательские настройки или системные метаданные, от пользователей и разработчиков, которые работают с контентом через стандартные интерфейсы WordPress.