WordPress 다중 사이트용 WP_SITEURL 및 WP_HOME 재정의
WordPress 사이트(http://www.example.com)에서 로컬 개발을 하기 위해 이전부터WP_SITEURL그리고.WP_HOME에 있어서의 가치관wp-config.php다음과 같이 합니다.
define('WP_SITEURL', 'http://local-example/');
define('WP_HOME', 'http://local-example/');
이를 통해 데이터베이스 및 사이트 파일을 로컬서버에 복사하고 필요에 따라 변경하여 로컬설치 테스트를 수행할 수 있습니다.
그런 다음 사용자, 인증, 플러그인 등을 주 사이트와 하위 도메인(http://second.example.com)에서 호스팅하는 보조 사이트 간에 공유할 수 있도록 설치를 WordPress 다중 사이트로 변환해야 했습니다.
위의 방법을 사용하여 의 값을 덮어씁니다.wp_options테이블은 더 이상 작동하지 않지만 엔트리의 값을 올바르게 설정하는 방법을 모르겠습니다.wp_blogs뿐만 아니라wp_2_optionsprimary 및 서브도메인 테이블.
업데이트 중HOSTS파일은 회피책이지만 이상적이지 않습니다(라이브 사이트 등과 비교할 수 없습니다).스크립트를 실행하여 데이터베이스 값을 변경하는 것도 시도해 본 옵션 중 하나이지만 조금 번거롭기 때문에 MultiSite에서 다음과 같은 설정 파일에서 이러한 값을 덮어쓸 수 있는 옵션이 있는지 여부입니다.wp-config.php, 그리고 만약 그렇다면 어떻게 보일지.
업데이트: 자세한 설명과 함께 완전히 업데이트된 플러그인 코드는 다음 URL에서 찾을 수 있습니다.http://justinsilver.com/technology/wordpress/wordpress-plugins/wordpress-plugin-wp-server-migration/
I was able to come up with a solution with the help of @user916011. I needed to be able to copy the
wp_options table(s) to my development environment as they contain configurations that are needed. To overcome the issue of not being able to set the WP_SITEURL and WP_HOME values in MultiSite, I wrote a custom filter to replace the
_config_wp_siteurl() and
_config_wp_home() functions that are available for non-multisite installs that is included in a plugin that is available network-wide and is configured in
wp-config.php. I am then able to copy all of the database tables
제외하고
wp_site and
wp_blogs to a local database.
콘텐츠의 URL을 처리하기 위해 Chris Murphy의 URL Token Replacement Technics for WordPress 3.0 기사를 적극 추천합니다.
이 예에서는 서브도메인 멀티사이트 설치를 전제로 하고 있습니다.도메인은 다음과 같습니다.example.com그리고 두 개의 서브도메인,www.example.com그리고.second.example.com로컬 개발 URL은 다음과 같습니다.www.example.local그리고.second.example.local각각 다음과 같다.
데이터베이스 변경:
도메인 값 업데이트wp_site:
UPDATE wp_site SET domain = 'example.local' WHERE domain = 'example.com';
의 도메인 값을 갱신합니다.wp_blogs:
UPDATE wp_blogs SET domain = 'www.example.local' WHERE domain = 'www.example.com';
UPDATE wp_blogs SET domain = 'second.example.local' WHERE domain = 'second.example.com';
플러그인 코드:다음 플러그인은 네트워크 전체에 설치해야 합니다.
<?php
/*
Plugin Name: MultiSite WP_HOME and WP_SITEURL
Plugin URI: http://doublesharp.com/
Description: Allows wp_options values to be overwritten in wp-config.php for MultiSite
Author: Justin Silver
Version: 1.0
Author URI: http://doublesharp.com
License: GPL2
*/
function _ms_config_wp_siteurl( $url = '' ) {
if (is_multisite()):
global $blog_id, $current_site;
$cur_blog_id = defined('BLOG_ID_CURRENT_SITE')? BLOG_ID_CURRENT_SITE : 1;
$key = ($blog_id!=$cur_blog_id)? $blog_id.'_' : '';
$constant = 'WP_'.$key.'SITEURL';
if ( defined( $constant ) )
return untrailingslashit( constant($constant) );
endif;
return $url;
}
add_filter( 'option_siteurl', '_ms_config_wp_siteurl' );
function _ms_config_wp_home( $url = '' ) {
if (is_multisite()):
global $blog_id;
$cur_blog_id = defined('BLOG_ID_CURRENT_SITE')? BLOG_ID_CURRENT_SITE : 1;
$key = ($blog_id!=$cur_blog_id)? $blog_id.'_' : '';
$constant = 'WP_'.$key.'HOME';
if ( defined( $constant ) )
return untrailingslashit( constant($constant) );
endif;
return $url;
}
add_filter( 'option_home', '_ms_config_wp_home' );
?>
wp-config 를 설정합니다.php:
새 상수 추가wp-config.php프라이머리 사이트에서는 표준규격을 사용해야 합니다.WP_HOME그리고.WP_SITEURL세 번째 URL은WP_{$blog_id}_HOME그리고.WP_{$blog_id}_SITEURL
define('WP_HOME', 'http://www.example.local');
define('WP_SITEURL', 'http://www.example.local');
define('WP_2_HOME', 'http://secondary.example.local');
define('WP_2_SITEURL', 'http://secondary.example.local');
함수에서 update_option을 사용할 수 있습니다.php
update_option("siteurl","http://example.com");
update_option("home","http://example.com");
여기에도 비슷한 질문이 있습니다.내가 가능한 해결책을 제공한 워드프레스 사이트의 팀 개발.이 경우, 그 정도까지는 하고 싶지 않을 수도 있습니다(단, 매우 유연합니다).그러나 도메인 치환 기술을 언급하고 있는 응답 부분을 항상 참조할 수 있습니다.
이 솔루션의 개요는 다음과 같습니다.URL 토큰 교환 방법...
저는 같은 문제가 있어서 wp-config에서 WP_HOME과 WP_SITEURL을 정의하는 것과 유사한 솔루션을 원했습니다.php를 입력합니다.
플러그인은 사용할 수 없습니다.GIT와 동기화 중이기 때문에 리포에 플러그인이 포함되어 있지 않기 때문에 매번 플러그인을 추가해야 합니다.wp_sitemeta 테이블을 통해 네트워크 전체에 활성화될 수 있을 것 같습니다.저한테는 이상적이지 않았어요
저는 이 해결책을 생각해 냈습니다.
wp_site, wp_site, wp_sitemeta입니다.php보다 아래쪽에 wp-config.$table_prefix:
/* Update local database */
mysql_connect( DB_HOST, DB_USER, DB_PASSWORD ) or die( mysql_error() );
mysql_select_db( DB_NAME );
$result = mysql_query("SELECT * FROM `". $table_prefix ."blogs`") or die( mysql_error() );
while( $row = mysql_fetch_array( $result ) )
{
$id = (1 == $row['blog_id']) ? '' : $row['blog_id'] .'_';
mysql_query( "UPDATE `". $table_prefix . $id ."options` SET `option_value`='http://". $row['domain'] ."/' WHERE (`option_name`='siteurl' OR `option_name`='home')" ) or die( mysql_error() );
}
그러면 사이트가 로컬 wp_blogs 테이블로 동기화됩니다.
유일한 단점은 새 사이트를 추가할 때 수동으로 wp_blogs 테이블에 복사하여 로컬 URL을 업데이트해야 한다는 것입니다.
이 질문은 답변하기엔 너무 오래된 질문이지만, 최근에는 스테이징에서 프로덕션으로 WP 사이트를 이행해야 하는 비슷한 상황에 직면했고, 5개의 서브 사이트를 가지고 있어 고통스러웠습니다.
하루 종일 머리를 긁적거린 후, 나는 간단하고 유용한 해결책을 찾았다.
물론 wp-config.php를 변경해야 합니다.
그 이외의 경우는, 다음의 순서에 따를 필요가 있습니다.
다음 명령을 사용하여 데이터베이스 덤프를 생성합니다.
mysqldump -u [user name] –p [password] [options] [database_name] [tablename] > [FileName]
그런 다음 해당 파일을 편집기에서 엽니다.
이전 도메인을 찾아 새 도메인으로 바꿉니다.
작성한 덤프를 사용하여 데이터베이스를 복원합니다.
mysql -u [user name] -p [password] [database name] < [file anme]
언급URL : https://stackoverflow.com/questions/12958123/override-wp-siteurl-and-wp-home-for-wordpress-multisite
'programing' 카테고리의 다른 글
| 동적 키, 값 쌍을 JavaScript 배열 또는 해시 테이블에 추가 (0) | 2023.03.16 |
|---|---|
| 기능적 리액트 컴포넌트에서 오류 경계를 활용하는 방법은 무엇입니까? (0) | 2023.03.16 |
| json 텍스트 파일에서 JSONObject를 로드하는 가장 좋은 방법은 무엇입니까? (0) | 2023.03.16 |
| 잭슨을 사용하여 JS 날짜를 역직렬화하려면 어떻게 해야 하나요? (0) | 2023.03.16 |
| HTML5를 통해 웹 앱이 피어 투 피어 HTTP 연결을 만들 수 있습니까? (0) | 2023.03.16 |