WPML
Статус
Решено
Заявлено для
WPML Multilingual CMS 3.3.5
Решено в
3.4

Обзор проблемы

Ошибка 404:

«Не удалось загрузить ресурс: сервер ответил со статусом 404 (Not Found)»

при вызове admin_url( ‘admin-ajax.php’ ).

Эта проблема возникает, когда Вы используете настройку «Свой домен для каждого языка».

При вызове admin_url( ‘admin-ajax.php’ ) Вы видите примерно следующее:

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

вместо:

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

Это приводит к ошибке 404:

«Не удалось загрузить ресурс: сервер ответил со статусом 404 (Not Found)».

Это будет исправлено в следующем релизе.

Обходное решение

Подключитесь к Вашему FTP и найдите файл wpml-url-converter.class.php, расположенный в wp-content/plugins/sitepress-multilingual-cms/inc/url-handling/wpml-url-converter.class.php.

Найдите функцию admin_url_filter (примерно на строке 39) и измените следующий код:

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

на:
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;
}

Обязательно сделайте резервную копию, прежде чем вносить какие-либо изменения в Ваши файлы.

Все известные проблемы →