WPML
Статус
Открыто
Заявлено для
WPML Media Translation 2.7.0

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

Даже после отключения всех параметров медиафайлов в разделе Как обрабатывать медиафайлы для нового контента в WPML Настройки Перевод медиафайлов, медиафайлы Вашего сайта по-прежнему будут дублироваться при добавлении нового языка.

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

Перед продолжением сделайте полную резервную копию Вашего сайта:


  1. Откройте файл wp-content/plugins/sitepress-multilingual-cms/classes/media/Loader.php.

Замените:
	public static function getData() {
		return [
			'name' => 'media_setup',
			'data' => [
				'endpoints' => [
					'prepareForTranslation'   => PrepareForTranslation::class,
					'translateExistingMedia'  => TranslateExistingMedia::class,
					'duplicateFeaturedImages' => DuplicateFeaturedImages::class,
					'finishMediaTranslation'  => FinishMediaTranslation::class,
					'prepareForSetup'         => PrepareSetup::class,
					'performSetup'            => PerformSetup::class,
				]
			]
		];
	}
}

на:

	public static function getData() {
		$media_handling = get_transient( 'media_handling' );
		if ( ! $media_handling ) {
			$check = get_option( '_wpml_media' );
			if ( $check["new_content_settings"]["duplicate_media"] ) {
				return [
					'name' => 'media_setup',
					'data' => [
						'endpoints' => [
							'prepareForTranslation'   => PrepareForTranslation::class,
							'translateExistingMedia'  => TranslateExistingMedia::class,
							'duplicateFeaturedImages' => DuplicateFeaturedImages::class,
							'finishMediaTranslation'  => FinishMediaTranslation::class,
							'prepareForSetup'         => PrepareSetup::class,
							'performSetup'            => PerformSetup::class,
						]
					]
				];

				}
			set_transient('media_handling', true, DAY_IN_SECONDS);
		} else {
			return [
				'name' => 'media_setup',
				'data' => [
					'endpoints' => [
						'prepareForTranslation'   => PrepareForTranslation::class,
						'duplicateFeaturedImages' => DuplicateFeaturedImages::class,
						'finishMediaTranslation'  => FinishMediaTranslation::class,
						'prepareForSetup'         => PrepareSetup::class,
						'performSetup'            => PerformSetup::class,
					]
				]
			];
		}
	}
}

Обратите внимание:
Этот код не удалит продублированные изображения, он лишь предотвратит процесс дублирования при создании нового языка.

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