발행물
여러 사람으로 구성된 팀 환경에서 일부 WordPress 개발을 시작하려고합니다. (한 번에 같은 코드베이스에서 작업하는 3 명 이상의 사람들이 각 지역에서 개발 중)
우리가 함께 작업 한 다른 CMS를 사용하면 모든 사람이 동일한 데이터베이스에서 설치를 지적했으며 CMS / 데이터베이스의 작동 방식으로 인해 동일한 URL에서 다른 URL에있는 동일한 컨텐츠를 설치에 공급할 수 있습니다. 많은 문제없이 동일한 데이터베이스 (업로드 폴더를 동기화 해야하는 경우 제외)
제 질문은 워드 프레스에서 이와 같은 접근 방식을 사용하지 못하게하는 방법과 이러한 문제를 어떻게 해결할 수 있습니까?
예. 동일한 데이터베이스에서 WordPress의 세 복사본이 모두 실행됩니다.
http : //dev.local/developer-a/
http : //dev.local/developer-b/
http : //dev.local/developer-c/
기타
이것이 출시되기 전의 개발 환경에서만 가능하다는 것은 말할 나위도 없습니다.
주요 이슈
- 데이터베이스 내에서 특정 URL에 대한 참조 (
wp_posts
와wp_options
테이블이 보인다) - 한 사람이 플러그인을 설치하면 다른 사람이 플러그인을 가지고 있지 않으며 데이터베이스에 동시성 문제가 발생합니다.
- 업로드 폴더를 동기화 상태로 유지
현재 솔루션
현재 첫 번째 문제에 대한 해결책의 시작이 있습니다. mu-plugins 폴더의 파일에 다음을 배치합니다.
이 코드는 URL 인스턴스를 고유 한 토큰으로 대체하여 데이터베이스에 들어오고 나가는 게시물 내용을 필터링합니다.
<?php
define('PORTABILITY_TOKEN', '{_portable_}');
function portability_remove_home($content)
{
$content = str_replace(get_option('home'), PORTABILITY_TOKEN, $content);
return $content;
}
add_filter('content_save_pre', 'portability_remove_home');
function portability_add_home($content)
{
$content = str_replace(PORTABILITY_TOKEN, get_option('home'), $content);
return $content;
}
add_filter('the_content', 'portability_add_home');
add_filter('the_editor_content', 'portability_add_home');
WordPress가 설치된 환경을 사용하여 PHP를 통해 home 및 siteurl 옵션을 설정했습니다. (다시 말해서 이것은 개발 전용입니다.) 이것은 각 개별 설치마다 WordPresses 게시물 내용이 클라이언트에 도착할 때마다 해당 URL에서 실행되는 것처럼 보일 것임을 의미합니다.
<?php
if (!defined('WP_HOME'))
{
// define WP_HOME (aka url of install) based on environment.
// IF THIS ISN'T WORKING, DEFINE IT EARLIER.
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . str_replace($_SERVER['DOCUMENT_ROOT'], '', dirname(__FILE__) ) );
}
if (!defined('WP_SITEURL'))
{
// Assumes WordPress is in a separate directory called 'wp', relative to WP_HOME.
// IF IT'S DIFFERENT, DEFINE IT EARLIER.
define('WP_SITEURL', WP_HOME . '/wp');
}
두 번째와 세 번째 문제는 적절한 심볼릭 링크를 사용하여 해결할 수있는 것처럼 보입니다 (모두 동일한 시스템에서 개발 중)
실제 질문
어쨌든 다른 URL 처리를 향상시킬 수 있습니까? URL을 데이터베이스에 하드 코딩 할 수있는 부분이 있습니까?
심볼릭 링크에 대해 알아야 할 점이 있습니까?
다른 사람이 생각할 수있는 다른 문제?
확실하지 않은 사항이 있으면 이러한 질문이 매우 구체적이라는 것을 알고 의견을 수정하면됩니다.
감사.