Resumen del problema
Si tiene un formulario con casillas de verificación creado con el plugin WPForms que se ejecuta en un servidor PHP 8x, no funcionará cuando intente enviarlo. En su lugar, obtendrá este error fatal:
[14-Feb-2023 18:43:45 UTC] PHP Fatal error: Uncaught TypeError: array_key_exists(): Argument #1 ($key) must be a valid array offset type in …/wp-content/plugins/sitepress-multilingual-cms/vendor/wpml/fp/core/Obj.php:98Stack trace: #5 …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php(191): WPML\FP\Obj::__callStatic('propOr’, Array)#6 [internal function]: WPML\Forms\Hooks\WpForms\Strings->WPML\Forms\Hooks\WpForms\{closure}(Array, 44)#17 …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php(197): WPML\FP\Obj::__callStatic('over’, Array)#18 …/wp-includes/class-wp-hook.php(308): WPML\Forms\Hooks\WpForms\Strings->translateEntry(Array, Array)
Solución alternativa
Este problema está solucionado. Actualizar a la última versión lo soluciona en su sitio, por lo que solo necesita esta solución alternativa si aún no puede actualizar.
Por favor, asegúrese de hacer una copia de seguridad completa antes de continuar.
- Abra el archivo …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Strings.php.
- Busque la línea 185.
- Reemplace:
if ( in_array( Obj::path( [ 'fields', $fieldId, 'type' ], $originalForm ), [ 'checkbox', 'radio', 'select' ], true ) ) {Por:
if ( in_array( Obj::path( [ 'fields', $fieldId, 'type' ], $originalForm ), [ 'radio', 'select' ], true ) ) {