Скрываем лишние произвольные поля из выпадающего списка в Вордпресс

Опубликовано 8 лет назад

Произвольные поля (custom fields) позволяют творить с Вордпресс чудеса. Но, допустим, не всегда имеет смысл формировать из них метабоксы, подключать ACF и подобные ему плагины. Бывает, что нужно просто стандартными средствами Вордпресс задействовать какое-то поле.

Иногда этому могут препятствовать другие, используемые на сайте, произвольные поля. Которых может быть столько, что нужное поле в списке просто не отыскать. В связи с чем, имена полей приходится каждый раз вводить вручную.

Скрываем лишние произвольные поля из выпадающего списка в WordPress

Этим, например, грешат некоторые плагины, генерируя неимоверное количество различных произвольных полей, засоряя тем самым выпадающий список доступных полей.

Нужно отметить, что в WordPress имеется возможность делать произвольные поля скрытыми, просто присвоив им имена, начинающиеся с символа подчеркивания. Которые при необходимости можно сделать видимыми, просто добавив в файл функций активной темы одну строку кода:

// Выводим скрытые произвольные поля
add_filter('is_protected_meta', '__return_false', 999);

Чтобы, наоборот, скрыть какое-то конкретное произвольные поле, можно воспользоваться таким кодом:

// Скрываем произвольное поле gss
add_filter('is_protected_meta', 'my_is_protected_meta_filter', 10, 2);
function my_is_protected_meta_filter($protected, $meta_key) {
    return $meta_key == 'gss' ? true : $protected;
}

Можно скрыть целый массив произвольных полей:

// Скрываем несколько произвольных полей: gss_1, gss_2, gss_3
add_filter( 'is_protected_meta', function( $protected, $meta_key, $meta_type )
{
    $allowed = array( gss_1, gss_2, gss_3 );
    if( in_array( $meta_key, $allowed ) )
        return true;
    return $protected;
}, 10, 3 );

Ну, а если какой-то нехороший плагин безостановочно генерирует произвольные поля, их можно скрыть по маске:

// Скрываем произвольные поля по маске gss_
add_filter( 'is_protected_meta', function( $protected, $meta_key, $meta_type )
{
    if (substr($meta_key, 0, 4) === 'gss_') {
      return true;
		}
    return $protected;
}, 10, 3 );

В заключение, хотелось бы сказать, что лучше избегать таких ситуаций. Все эти скрытия — очередные костыли.

Иван Данилин
Автор Иван Данилин

Фулстек веб‑разработчик, специализируюсь на платформе WordPress

Подробнее
Комментарии
  1. Спасибо! Пригодилась инфа, как отобразить скрытые поля.
Добавить комментарий