Как скрыть поля acf?

WordPress предоставляет различные способы скрытия полей, созданных с помощью плагина Advanced Custom Fields (ACF). Ниже я рассмотрю несколько вариантов.

1. Использование фильтра "acf/load_field". Вы можете использовать этот фильтр для изменения параметров поля перед его загрузкой в административном интерфейсе. Например, если вы хотите скрыть поле с именем "my_field", вы можете добавить следующий код в файл functions.php вашей темы:

function hide_acf_field( $field ) {
    if ( $field['name'] === 'my_field' ) {
        $field['instructions'] = ''; // Очищаем инструкцию
        $field['wrapper']['class'] .= ' hidden'; // Добавляем класс "hidden" для скрытия поля через CSS
    }
    return $field;
}
add_filter( 'acf/load_field', 'hide_acf_field' );

2. Использование CSS для скрытия поля. В некоторых случаях можно просто добавить класс "hidden" к полю, чтобы скрыть его с помощью CSS. Для этого можно использовать фильтр "acf/field_wrapper_attributes". Вот пример:

function hide_acf_field_css( $wrapper_attributes, $field ) {
    if ( $field['name'] === 'my_field' ) {
        $wrapper_attributes['class'] .= ' hidden'; // Добавляем класс "hidden" для скрытия поля через CSS
    }
    return $wrapper_attributes;
}
add_filter( 'acf/field_wrapper_attributes', 'hide_acf_field_css', 10, 2 );

3. Использование JavaScript для скрытия поля. В случаях, когда вы хотите скрыть поле динамически, в зависимости от значения другого поля или какого-либо другого условия, вы можете использовать JavaScript. Например, предположим, что у вас есть поле "my_field" и поле "another_field". Если поле "another_field" имеет значение "hide", то поле "my_field" должно быть скрыто. Для этого добавьте следующий код в файл functions.php вашей темы:

function hide_acf_field_js() {
    ?>
    <script type="text/javascript">
        jQuery(function($) {
            // Вставьте селектор поля "another_field" и значения, при которых поле "my_field" будет скрыто
            var selector = '[name="another_field"]', // Селектор поля
                hide_values = ['hide'], // Значения, при которых поле будет скрыто
                $field = $('[name="my_field"]').closest('.acf-field');

            $(document).on('change', selector, function() {
                var value = $(this).val();
                if (hide_values.indexOf(value) !== -1) {
                    $field.hide();
                } else {
                    $field.show();
                }
            }).change(); // Применяем изменения при загрузке страницы
        });
    </script>
    <?php
}
add_action( 'admin_footer', 'hide_acf_field_js' );

В этих примерах используется код, который можно разместить в файле functions.php вашей темы WordPress. Помните, что вы должны заменить "my_field" на имя вашего поля ACF, которое хотите скрыть.

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