다중 사이트 워드 프레스 설치를 단일 사이트로 변환


17

기본 블로그가있는 WordPress Multisite 네트워크가 있고 모든 컨텐츠가 해당 블로그로 이동되었다고 가정하면 어떻게 네트워크를 표준 ​​WordPress 비 네트워크 비 멀티 사이트 설치로 다시 축소 할 수 있습니까?


아래에서 두 가지 유용한 링크를 찾았습니다. 유용한 정보는 여기 : wpmututorials.com/how-to/how-to-disable-multisitewordpress.org/support/topic/…에서 확인할 수 있습니다.

나는 그것을 표현하는 더 좋은 방법은 네트워크에서 단일 사이트를 추출하는 것이라고 생각합니다. 네트워크를 다시 축소하면 실제로 생성 된 사이트가 아닌 기본 사이트 만 작동합니다.
sanchothefat

답변:


17

다중 사이트 설치에서 단일 인스턴스로 사이트를 추출하는 단계를 수행했습니다.

  1. 깨끗한 WP 사본을 설정하지만 설치하지 마십시오
  2. 사이트 ID 찾기
  3. blogs.dir / ID / files에서 새 WP 업로드 폴더로 파일을 복사하십시오.
  4. 사이트가 사용하는 테마 및 사용하는 플러그인을 새 wp-content 폴더의 해당 폴더로 복사하십시오.
  5. 다중 사이트 데이터베이스를 백업하지만 MySQL 워크 벤치를 사용하는 대상 사이트 및 사용자 및 usermeta 테이블 만 해당
  6. 백업을 새 데이터베이스로 복원하고 테이블 이름 접두어를 변경하여 예를 들어 모두 동일하게하십시오. 'wp_SITEID_'에서 'wp_'
  7. MySQL 워크 벤치 또는 쿼리 브라우저를 사용하여 다음과 같이 user 및 usermeta 테이블을 정리하십시오.
    1. DELETE FROM wp_usermeta WHERE user_id NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    2. DELETE FROM wp_users WHERE ID NOT IN( SELECT distinct(user_id) FROM wp_usermeta where meta_key LIKE 'wp_SITEID_%' );
    3. UPDATE wp_usermeta SET meta_key = REPLACE( meta_key, 'wp_SITEID_', 'wp_' ) WHERE meta_key LIKE 'wp_SITEID_%';
    4. UPDATE wp_options SET option_name = REPLACE( option_name, 'wp_SITEID_', 'wp_' ) WHERE option_name LIKE 'wp_SITEID_%';
  8. WP 설치 프로세스를 시작하여 wp-config.php'설치 실행'을 클릭하지 마십시오.
  9. 퍼머 링크가 사용 중이라면 기본 .htaccess 파일을 만들거나 wp-admin의 퍼머 링크 페이지를 방문하십시오.
  10. 다음에 데이터베이스에서 이전 URL을 업데이트해야합니다. 이상적으로 wp-cli 의 툴 또는 일반적인 목적 전구체 검색 / 바꾸기 db 와 같은 안전한 검색 / 바꾸기 도구 를 상호 연결 / it로 사용하십시오 . 특히로 교체 blogs.dir/SITE_ID/files하고 uploads사이트 URL을 변경하는 경우로 검색 oldsite.com하고로 교체하십시오 newsite.com.

상당한 노력과 데이터베이스 편집에주의를 기울여야하지만 모든 설정 등을 그대로 유지하면서 기존 다중 사이트에서 단일 사이트를 추출하는 유일한 방법입니다.

편집하다:

@Jake가 발견했듯이 예를 들어 수행해야 할 마지막 단계를 언급하는 것을 잊었습니다. 기존 URL을 검색 / 교체합니다. 그에 따라 목록을 업데이트했습니다.


SITEID올바른 사이트 ID로 변경했을 때 7 단계의 아무 것도 효과가 없었습니다 . 대신 테이블 에서 siteurlhome옵션을 업데이트해야 할 수도 있습니다 wp_options. 이것의 나머지는 꽤 좋은 점검표였습니다. 감사.
Jake

또한 변경하는 경우 이전 도메인 / 새 도메인의 데이터베이스에서 찾기 및 바꾸기를 수행해야 할 수도 있습니다. 그리고 이미지 / 파일에 대한 링크가 올바른지 확인하려면 blogs.dir 또는 uploads / sites를 찾아서 바꿔야합니다. WP의 모든 직렬화 된 데이터에주의하십시오. MYSQL에서 열린 찾기 및 바꾸기를 실행하는 것은 안전하지 않습니다. 같은 사용 무언가 : interconnectit.com/products/...
제이크

@Jake 덕분에, 나는 URL을 변경하는 컨텍스트를 잊고 당신은 바로 내가 추가, 검색 / 기존 URL의 단계를 교체를 놓친하고 그 완성도를 위해서에서
sanchothefat

@Jake 자세히 설명하지 않았지만 7 단계는 기본적으로 추출중인 사이트에 속하지 않은 사용자를 제거하고 여전히 올바른 권한을 가지고 있는지 확인합니다. 정말 정리 작업입니다.
sanchothefat

나는 그들이 한 일을 이해했다. 첫 커플이 나에게 오류를 반환했지만 어쩌면 뭔가를 놓쳤을 수도 있고 정리할 사용자가 있는지 확실하지 않기 때문에 어쨌든 건너 ​​뛸 수 있었다. 그리고 나에게 잘못하지 마십시오. 이것은 다른 것들없이 매우 도움이되었습니다. 나중에 사용하기 위해주의해야합니다. 감사!
Jake

5

새 블로그를 다시 설치하지 않고 멀티 사이트 설치를 제거 할 수 있습니다. 단계를 따르십시오.

  1. wp-content의 백업, 데이터베이스 덤프 및 파일 백업 작성
  2. WP_ALLOW_MULTISITEwp-config.php에서 상수 를FALSE
  3. 다음 wp-config.php과 같이 에서 MU 설정을 제거하거나 주석 처리하십시오 .

    /**
    define( 'MULTISITE', true );
    define( 'SUBDOMAIN_INSTALL', false );
    $base = '/wordpress/';
    define( 'DOMAIN_CURRENT_SITE', 'localhost' );
    define( 'PATH_CURRENT_SITE', '/wordpress/' );
    define( 'SITE_ID_CURRENT_SITE', 1 );
    define( 'BLOG_ID_CURRENT_SITE', 1 );
    */
  4. .htaccess아래 소스와 같이 에서 MU 설정을 제거하십시오 .

    # BEGIN WordPress
    RewriteEngine On
    RewriteBase /wordpress/
    RewriteRule ^index\.php$ - [L]
    
    # uploaded files
    RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
    
    # add a trailing slash to /wp-admin        
    RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
    RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
    RewriteRule . index.php [L]
    # END WordPress
  5. 백엔드에서 새 영구 링크를 작성하고 WP에 대해 불가능한 경우이 파일에 대한 쓰기 권한에 wp-admin/options-permalink.php결과를 복사 .htaccess하십시오.

  6. 테이블에서 쓸모없는 항목을 제거하십시오 users. phpMyAdmin 또는 Adminer와 같은 도구에서 follow sql 문을 사용하십시오.

    `ALTER TABLE `wp_users` DROP `spam`, DROP `deleted`;`
  7. 다음 테이블을 삭제할 수 있습니다.

    • wp_blogs
    • wp_blog_versions
    • wp_registration_log
    • wp_signups
    • wp_site
    • wp_sitemeta
    • wp_sitecategories (존재하는 경우에만)

    ( wp_데이터베이스 접두사로 변경 )

  8. 이제 네트워크의 다른 블로그의 마지막 테이블 만 있습니다. 이 컨텐츠도 사용하려면 워드 프레스를 통해 XML로 내보내기 전에이 파일을 내보내고 새로 설치 한 단일 설치로 가져 오십시오.


1
이것은 좋은 답변이지만, @sanchothefat가 ID에 관계없이 모든 사이트를 추출하는 데 사용할 수 있기 때문에 @sanchothefat의 답변을 받아 들였습니다. 반면에 귀하의 지시에 따라 루트 사이트가 제공됩니다
Tom J Nowell

1

실제로 가능하고 상당히 쉽습니다. 나는 그것을 여러 번 스스로 해왔다.

고려해야 할 사항이 있습니다.

  1. 다중 사이트 또는 단일 사이트인지를 정의하는 wp-config.php
  2. 다중 사이트를 지원하기위한 다시 쓰기 규칙이 포함 된 .htaccess
  3. 다중 사이트를 지원하기 위해 생성 된 추가 테이블

wp-config에서 다중 사이트 define (?)을 주석 처리하고 영구 링크를 업데이트하면 사이트가 단일 사이트 / 기본 모드로 되돌아갑니다. 그런 다음 데이터베이스를 정리하기 만하면됩니다.

어떤 이유로 든 wp-admin에 액세스하여 영구 링크를 업데이트 할 수없는 경우 단순히 .htaccess 파일을 삭제하십시오. 단일 사이트 모드에서 WordPress가 다시 작성합니다.

코드 / 지원 기사에 대한 링크를 찾아서 답변을 업데이트하기 위해 최선을 다하겠습니다.

지원 포럼 http://wordpress.org/support/topic/revert-to-single-site 의 한 항목에 대한 링크는 다음과 같습니다 .


0

여기의 기본 프로세스는 WP 3.5.1에서도 잘 작동합니다. 한 가지 설명 : 하위 사이트의 이름을 지정한 경우 해당 이름을 제거하기 위해 데이터베이스의 링크를 변경해야합니다. 내 하위 사이트의 이름이 mysite.com/comics 인 경우 위 절차를 수행 한 후 WP는 mysite.com/comics를 찾고 영구 링크에서 오류를 얻습니다. / comics 확장자를 찾아 WP-OPTIONS 테이블을 편집하고 제거하십시오. 또한 업로드 디렉토리가 올바른 위치를 가리키는 지 확인하십시오. 여전히 blogs.dir 항목이 표시 될 수 있으며 대신 wp-content / uploads /를 가리켜 야합니다.


이 답변을 독립형 답변으로 편집 할 수 있습니까? 다른 답변 중 하나에 대한 의견이어야 할 것 같습니다.
s_ha_dum

0

놓치지 말아야 할 중요한 점은 덜 이야기하지만 여전히 줄을 가지고 있어야한다는 것입니다 .

define( 'WP_ALLOW_MULTISITE',...

그러나 다음으로 업데이트해야합니다.

define( 'WP_ALLOW_MULTISITE', 0 );

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.