Многие сайты на WordPress используют различные формы — контактные, регистрационные, подписки и прочие. Со временем в формах могут накапливаться неиспользуемые или устаревшие поля, которые мешают удобству пользователей и замедляют работу сайта. В этой статье мы подробно разберём, как грамотно удалить такие поля из форм WordPress, используя популярные плагины и собственные решения на PHP.
Почему важно удалять неиспользуемые поля из форм WordPress
Удаление лишних полей улучшает опыт пользователей, снижает нагрузку на сервер и минимизирует возможные ошибки при обработке данных. Кроме того, это помогает соблюдать требования GDPR и других законов о защите данных — чем меньше собирается лишней информации, тем лучше.
К тому же, упрощённые формы повышают конверсию — люди охотнее заполняют короткие и понятные поля.
И, наконец, с технической стороны, уменьшение количества полей снижает размер HTML страницы и количество скриптов, что положительно влияет на скорость загрузки.
Удаление полей в популярных плагинах форм
Contact Form 7
CF7 — один из самых популярных плагинов для создания форм. Чтобы удалить поле, достаточно убрать соответствующую разметку из шорткода формы в настройках:
[text* your-name] — это поле имени
Чтобы удалить, просто удалите этот шорткод из формы.
Если же нужно условно скрыть поле, можно использовать фильтр clearfy_cf7_form_elements, например:
add_filter('wpcf7_form_elements', 'clearfy_remove_cf7_field', 10, 1);
function clearfy_remove_cf7_field($content) {
// Удаляем поле с именем your-phone
$content = preg_replace('/\[tel your-phone.*?\]/', '', $content);
return $content;
}
Это удалит поле с типом tel и именем your-phone из формы.
Gravity Forms
В Gravity Forms поля создаются через интерфейс, но для удаления программно можно использовать хук gform_pre_render и фильтровать поля формы:
add_filter('gform_pre_render', 'clearfy_remove_gf_field');
function clearfy_remove_gf_field($form) {
foreach ($form['fields'] as $key => $field) {
if ($field->label == 'Старое поле') { // замените на нужное имя поля
unset($form['fields'][$key]);
}
}
// Восстанавливаем индексы массива
$form['fields'] = array_values($form['fields']);
return $form;
}
Такой код позволит удалить поле с названием "Старое поле" из формы до её отображения.
WPForms
WPForms не предоставляет простого способа программного удаления полей, так как формы хранятся сериализованными. Однако можно вручную редактировать форму в админке или использовать плагины-оптимизаторы. Для автоматизации стоит рассмотреть Clearfy Pro — в нем есть функции для оптимизации и чистки форм.
Удаление полей из пользовательских форм и ACF
Если у вас кастомные формы или используются поля Advanced Custom Fields (ACF), удаление полей требует другого подхода.
Удаление полей ACF из фронтенда
Для удаления вывода определённых полей ACF можно использовать фильтр acf/load_field:
add_filter('acf/load_field/name=old_field', 'clearfy_hide_acf_field');
function clearfy_hide_acf_field($field) {
// Возвращаем false, чтобы поле не отображалось
return false;
}
Это полностью скроет поле old_field из редактора и фронтенда.
Удаление полей из кастомных форм
Если формы создаются вручную, достаточно убрать соответствующий HTML-код полей из шаблона. Для динамических форм, созданных с помощью PHP, можно реализовать условие удаления поля, например:
function clearfy_render_form() {
$fields = [
'name' => 'Имя',
'email' => 'Email',
'phone' => 'Телефон',
'old_field' => 'Старое поле'
];
// Удаляем неиспользуемое поле
unset($fields['old_field']);
foreach ($fields as $key => $label) {
echo '<label>' . $label . '<input type="text" name="' . $key . '" /></label>';
}
}
Как избежать проблем при удалении полей: проверка и миграция данных
Удаление полей из форм — это не только про фронтенд, но и про данные, которые уже могли быть сохранены в базе. Важно:
- Проверить, есть ли данные, связанные с удаляемым полем, в базе данных;
- Если данные есть, принять решение: удалить их, перенести или архивировать;
- Обновить все обработчики и функции, которые работают с этими полями, чтобы избежать ошибок.
Для этого можно написать функцию очистки, например:
function clearfy_delete_field_data($field_name) {
global $wpdb;
// Пример для метаданных постов
$wpdb->query($wpdb->prepare(
"DELETE FROM {$wpdb->postmeta} WHERE meta_key = %s",
$field_name
));
}
Вызовите эту функцию перед удалением поля из формы, если хотите очистить базу.
Практические советы и плагины для оптимизации форм
Для комплексной работы с формами и их оптимизации рекомендую обратить внимание на следующие инструменты:
- Clearfy Pro — имеет встроенные функции для оптимизации форм, удаления мусора и неиспользуемых элементов.
- Expert Review — помогает анализировать формы и улучшать UX, выявляя лишние поля.
- Custom PHP-фильтры и хуки — лучший способ контролировать форму на уровне кода.
Используя эти методы и инструменты, вы сможете поддерживать формы чистыми, лёгкими и эффективными, что положительно скажется на конверсии и скорости сайта.