WPML
Stato
Risolto
Segnalato per
WPForms Multilingual 0.3.5
Risolto in
WPForms Multilingual 0.3.6
Tag dell’argomento
Compatibility

Panoramica del problema

Se utilizzi WPForms e hai aggiornato di recente alla versione 1.8.5.1, potresti riscontrare il seguente errore nelle informazioni del tuo debug.log se il tuo sito web è in esecuzione in un ambiente PHP8:

PHP Fatal error:  Uncaught TypeError: strlen(): Argument #1 ($str) must be of type string, array given in .../wp-includes/formatting.php:3557

Soluzione alternativa

Si consiglia ai clienti che riscontrano questo problema di tornare a WPForms 1.8.4 fino al rilascio di una correzione.

In alternativa, assicurati di avere un backup completo del tuo sito prima di procedere.


  • Apri il file …/wp-content/plugins/wpml-wpforms/classes/Hooks/WpForms/Notifications.php.

  • Cerca la riga 70.

  • Cambia:
    	public function applyEmailTranslations( $data, $emails ) {
    		$package = $this->newPackage( $this->getId( $emails->form_data ) );
    		do_action( 'wpml_switch_language_for_email', $data['to'] );
    
    		$dataKeys = [ 'subject', 'message' ];

  • Con:
    	public function applyEmailTranslations( $data, $emails ) {
    		$package = $this->newPackage( $this->getId( $emails->form_data ) );
    		if (is_array($data['to'])){
    			foreach ($data['to'] as $address){
    				do_action( 'wpml_switch_language_for_email', $address );
    			}
    		} else {
    			do_action( 'wpml_switch_language_for_email', $data['to'] );
    		}
    
    		$dataKeys = [ 'subject', 'message' ];

Tutti i problemi noti →