WPML

Panoramica del problema

In alcuni scenari, il plugin Advanced Custom Fields Multilingual (ACFML) potrebbe generare un avviso PHP durante l’utilizzo dei campi ACF:

Attempt to read property "post_content" on null in plugins .../acfml/classes/class-wpml-acf-repeater-shuffle.php on line 249

Soluzione alternativa

Questo problema è stato risolto in Advanced Custom Fields Multilingual 2.2.0. L'aggiornamento risolve il problema sul tuo sito, quindi hai bisogno di questa soluzione alternativa solo se non puoi ancora aggiornare.

Assicurati di avere un backup completo del tuo sito prima di procedere.

  • Apri il file …/acfml/classes/class-wpml-acf-repeater-shuffle.php.
  • Cerca la riga 244.
  • Sostituisci:
    private function isChildOfRepeaterField( $key, $postId ) {
    	$acfFieldObject = get_field_object( $key, $postId );
    	if ( isset( $acfFieldObject['parent'] )
    		 && $acfFieldObject['parent'] > 0 ) {
    		$fieldParent        = get_post( $acfFieldObject['parent'] );
    		$fieldParentContent = maybe_unserialize( $fieldParent->post_content );
    		if ( isset( $fieldParentContent['type'] ) && 'repeater' === $fieldParentContent['type'] ) {
    			return true;
    		}
    	}
    	return false;
    }
  • Con:
    private function isChildOfRepeaterField( $key, $postId ) {
        $acfFieldObject = get_field_object( $key, $postId );
        if ( isset( $acfFieldObject['parent'] ) ) {
            if ( is_numeric( $acfFieldObject['parent'] ) && $acfFieldObject['parent'] > 0 ) {
                $fieldParent = get_post( $acfFieldObject['parent'], $postId );
                if ( $fieldParent ) {
                    $fieldParentContent = maybe_unserialize( $fieldParent->post_content );
                    if ( isset( $fieldParentContent['type'] ) && 'repeater' === $fieldParentContent['type'] ) {
                        return true;
                    }
                }
            } elseif ( is_string( $acfFieldObject['parent'] ) ) {
                $fieldParent = get_field_object( $acfFieldObject['parent'], $postId );
                if ( isset( $fieldParent['type'] ) && 'repeater' === $fieldParent['type'] ) {
                    return true;
                }
            }
        }
        return false;
    }

Tutti i problemi noti

Riscontri ancora questo problema?

Se l’aggiornamento non risolve il problema, fai una richiesta di supporto e lo analizzeremo con te.