Чтобы сделать ваш код более универсальным и поддерживать множество языков, можно использовать массив для хранения сообщений об ошибках для различных языков. Также стоит учитывать возможность перевода ошибок в зависимости от конфигурации Polylang. Вот улучшенный пример вашего кода:
```php
add_filter('wpcf7_validate', 'custom_cf7_error_messages', 10, 2);
function custom_cf7_error_messages($result, $tags) {
$current_lang = pll_current_language();
// Массив с переводами ошибок
$error_messages = array(
'en' => array(
'invalid_required' => 'This field is required',
'invalid_email' => 'Please enter a valid email address',
),
'ru' => array(
'invalid_required' => 'Это поле обязательно для заполнения',
'invalid_email' => 'Пожалуйста, введите действительный адрес электронной почты',
),
// Добавьте другие языки по аналогии
);
// Проверка, существует ли язык в массиве
if (array_key_exists($current_lang, $error_messages)) {
foreach ($error_messages[$current_lang] as $error_code => $error_message) {
if (isset($result->messages[$error_code])) {
$result->messages[$error_code] = $error_message;
}
}
}
return $result;
}
```
В этом улучшенном коде:
1. Создается массив `$error_messages`, который содержит переводы для разных языков.
2. Используется перебор для установки сообщений об ошибках в зависимости от текущего языка.
3. Если вы хотите добавить больше языков, просто добавьте аналогичные блоки в массив.
Все это делает код более удобным для расширения и управления сообщениями об ошибках на разных языках.