WPML

Visão geral do problema

Em alguns cenários, o plugin Advanced Custom Fields Multilingual (ACFML) pode apresentar um aviso do PHP ao utilizar campos do ACF:

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

Solução alternativa

Este problema foi corrigido em Advanced Custom Fields Multilingual 2.2.0. Atualizar resolve isso no seu site, então você só precisa desta solução alternativa se ainda não puder atualizar.

Certifique-se de ter um backup completo do seu site antes de prosseguir.

  • Abra o arquivo …/acfml/classes/class-wpml-acf-repeater-shuffle.php.
  • Procure a linha 244.
  • Substitua:
    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;
    }
  • Por:
    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;
    }

Todos os problemas conhecidos

Ainda está vendo este problema?

Se a atualização não resolver, envie uma dúvida de suporte e nós vamos analisar isso com você.