- Статус
- Решено
- Заявлено для
- WPML Multilingual CMS 4.5.8
- Решено в
- 4.5.9
Обзор проблемы
В некоторых средах хостинга Вы заметите, что таблицы стилей WPML загружаются некорректно. Если Вы проверите консоль браузера, Вы увидите, что таблицы стилей указывают на папку /ontent/ вместо /wp-content/. Например:
https://domain.com/ontent/plugins/sitepress-multilingual-cms/templates/language-switchers/legacy-list-horizontal/style.css?ver=1
Обходное решение
Сделайте полную резервную копию Вашего сайта, прежде чем продолжить.
- Откройте файл /wp-content/plugins/sitepress-multilingual-cms/classes/class-wpml-file.php.
- Найдите строку 66:
- Замените:
public function get_uri_from_path( $path ) { $base = null; if ( $this->wp_api->defined( 'WP_CONTENT_DIR' ) && $this->wp_api->defined( 'WP_CONTENT_URL' ) ) { $base_path = $this->fix_dir_separator( $this->wp_api->constant( 'WP_CONTENT_DIR' ) ); if ( 0 === strpos( $path, $base_path ) ) { $base = array( 'path' => $base_path, 'uri' => $this->wp_api->constant( 'WP_CONTENT_URL' ), ); } } if ( ! $base ) { $base = array( 'path' => $this->wp_api->constant( 'ABSPATH' ), 'uri' => site_url(), ); } $base['uri'] = preg_replace( '/(^https?:)/', '', $base['uri'] ); $relative_path = substr( $path, strlen( $base['path'] ) ); $relative_path = str_replace( array( '/', '' ), '/', $relative_path ); $relative_path = ltrim( $relative_path, '/' ); return trailingslashit( $base['uri'] ) . $relative_path; } - На:
public function get_uri_from_path( $path ) { $base = null; if ( $this->wp_api->defined( 'WP_CONTENT_DIR' ) && $this->wp_api->defined( 'WP_CONTENT_URL' ) ) { $base_path = $this->fix_dir_separator( $this->wp_api->constant( 'WP_CONTENT_DIR' ) ); if ( 0 === strpos( $path, $base_path ) ) { $base = array( 'path' => $base_path, 'uri' => $this->wp_api->constant( 'WP_CONTENT_URL' ), ); } } if ( ! $base ) { $base = array( 'path' => $this->wp_api->constant( 'ABSPATH' ), 'uri' => site_url(), ); if ( 0 !== strpos( $path, $base_path )) { $search = (WPML_PLUGIN_PATH); $pathexplode = explode($this->wp_api->constant( 'DIRECTORY_SEPARATOR' ), WPML_PLUGIN_PATH); $pathexplode = array_slice($pathexplode, -3, 3, false); $replace = $pathexplode[0] .$this->wp_api->constant( 'DIRECTORY_SEPARATOR' ) . $pathexplode[1].$this->wp_api->constant( 'DIRECTORY_SEPARATOR' ).WPML_PLUGIN_FOLDER; $base["path"] = str_replace ($replace, "", $search); } } $base['uri'] = preg_replace( '/(^https?:)/', '', $base['uri'] ); $relative_path = substr( $path, strlen( $base['path'] ) ); $relative_path = str_replace( array( '/', '\' ), '/', $relative_path ); $relative_path = ltrim( $relative_path, '/' ); return trailingslashit( $base['uri'] ) . $relative_path; }