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

2 мая 2016 120

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

CodeCanyon: Лучшие плагины для WordPress
CodeCanyon: Лучшие плагины для WordPress

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

Скрываем лишние произвольные поля из выпадающего списка в 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.

Комментарии

Разгоните свой WordPress

Хостинг-провайдер номер один в России — REG.RU

Подробнее