WPML

WPML 3.9에서는 다른 언어로 페이지를 볼 때 원본 언어의 콘텐츠를 표시할 수 있는 기능이 도입되었습니다. 3.9 버전 이전에 사이트에서 콘텐츠 복제를 사용했다면, 이 새로운 번역 모드를 사용하기 전에 사이트에서 모든 중복 콘텐츠를 삭제하는 것이 좋습니다.

이 튜토리얼을 사용하는 방법

이 페이지에서 제공하는 단계는 데이터베이스에서 설정 및 콘텐츠를 제거합니다. 수행 중인 작업을 정확히 아는 경우에만 계속 진행하고, 반드시 사이트 데이터베이스의 전체 백업을 생성하는 것으로 시작하세요.

제공된 SQL 쿼리를 사용하려면 쿼리를 편집해야 합니다:
  • XXXX를 중복 콘텐츠를 삭제할 포스트 유형(예: “post”, “product” 또는 “page”)으로 바꾸세요.
  • YYYY를 사이트의 기본 언어 코드(예: “en”)로 바꾸세요.
  • wp_wp-config.php 파일의 $table_prefix 변수를 사용하여 구성한 테이블 접두사로 바꾸세요(기본값은 wp_입니다).

마지막으로 phpMyAdmin과 같은 SQL 데이터베이스 작업 도구 중 하나를 사용하여 이 쿼리를 실행해야 합니다.

1. 중복 콘텐츠 제거

wp_posts에서 중복 콘텐츠 삭제
DELETE FROM wp_posts
WHERE post_type = 'XXXX' AND ID IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE pm.meta_key = '_icl_lang_duplicate_of' AND pm.meta_value > 0 AND
    t.element_type LIKE 'post_%' AND t.language_code = 'YYYY'
)

2. 번역 설정 제거

wp_icl_translations에서 번역 설정 삭제
DELETE FROM wp_icl_translations
WHERE element_type = 'post_XXXX' AND element_id IN (
  SELECT pm.post_id
  FROM wp_postmeta pm
    JOIN wp_icl_translations t ON t.element_id = pm.meta_value
  WHERE meta_key = '_icl_lang_duplicate_of' AND meta_value > 0 AND t.language_code = 'YYYY'
)

3. 고립된 포스트 메타 제거


이 쿼리의 실행은 느리며 서버 설정에 따라 시간 초과가 발생할 수 있습니다. 또한 이 쿼리는 데이터베이스에서 고립된 포스트 메타를 지우는 데만 사용되므로 반드시 실행할 필요는 없습니다.
wp_postmeta에서 고립된 항목 삭제
DELETE pm
FROM wp_postmeta pm
  LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
WHERE wp.ID IS NULL

작성자: Amir · 마지막 업데이트: 2022년 5월 23일