WPML
Status
Resolvido
Relatado para
WPML Multilingual CMS 3.3.5
Resolvido em
3.4

Visão geral do problema

Um erro 404:

“Falha ao carregar recurso: o servidor respondeu com um status de 404 (Not Found)”

ao chamar admin_url( ‘admin-ajax.php’ ).

O problema aparece quando você usa a configuração “Um domínio diferente por idioma”.

Quando você chama admin_url( ‘admin-ajax.php’ ), você vê algo assim:

http://secondary-language-domain.com/secondary-lang-code/wp-admin/admin-ajax.php

em vez de:

http://secondary-language-domain.com/wp-admin/admin-ajax.php.

Isso resulta em um erro 404:

“Falha ao carregar recurso: o servidor respondeu com um status de 404 (Not Found)”.

Será corrigido na próxima versão.

Solução alternativa

Faça login no seu FTP e encontre o arquivo wpml-url-converter.class.php localizado em wp-content/plugins/sitepress-multilingual-cms/inc/url-handling/wpml-url-converter.class.php.

Pesquise pela função admin_url_filter (por volta da linha 39) e altere o seguinte código:

public function admin_url_filter( $url, $path ) {
    if ( 'admin-ajax.php' === $path ) {
        $url = $this->get_admin_ajax_url( $url );
    }
    return $url;
}

para:
public function admin_url_filter( $url, $path ) {
    if ( ( strpos( $url, 'http://' ) === 0 
      || strpos( $url, 'https://' ) === 0 ) 
      && 'admin-ajax.php' === $path 
      && $this->wpml_wp_api->is_front_end() ) {
        global $sitepress;
    
        $url = $this->convert_url( $url,
        $sitepress->get_current_language() );
    }

    return $url;
}

Lembre-se sempre de fazer um backup primeiro antes de alterar qualquer coisa em seus arquivos.

Todos os problemas conhecidos →