WPML
Stato
Risolto
Segnalato per
WPML Multilingual CMS 3.3.5
Risolto in
3.4

Panoramica del problema

Un errore 404:

“Impossibile caricare la risorsa: il server ha risposto con uno stato 404 (Not Found)”

quando richiami admin_url( ‘admin-ajax.php’ ).

Il problema si presenta quando usi l’impostazione “Un dominio diverso per lingua”.

Quando richiami admin_url( ‘admin-ajax.php’ ), vedi qualcosa del genere:

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

invece di:

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

Questo causa un errore 404:

“Impossibile caricare la risorsa: il server ha risposto con uno stato 404 (Not Found)”.

Sarà corretto nella prossima versione.

Soluzione alternativa

Accedi al tuo FTP e trova il file wpml-url-converter.class.php situato in wp-content/plugins/sitepress-multilingual-cms/inc/url-handling/wpml-url-converter.class.php.

Cerca la funzione admin_url_filter (intorno alla riga 39) e modifica il seguente codice:

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

in:
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;
}

Ricorda sempre di eseguire un backup prima di apportare modifiche ai tuoi file.

Tutti i problemi noti →