답변:
JetPack 2.2.1부터는 로컬 개발 / 디버그 모드가 있습니다. http://jetpack.me/2013/03/28/jetpack-dev-mode-release/
사용하다:
define ('JETPACK_DEV_DEBUG', true);
wp-config에서 연결이 필요없는 모듈에 액세스 할 수 있어야합니다.
v3.3 주변에서 다른 로컬 개발 트리거가 정의 대신 필터를 통해 추가되었으므로 업데이트되었습니다.
최신 버전은 다음과 같습니다. http://jetpack.me/support/development-mode/
사이트의 호스트 이름에 마침표가없는 경우 (예 : localhost) 개발 모드가 자동으로 활성화됩니다. mycooltestsite.local 또는 다른 URL과 같은 다른 URL을 사용하는 경우 JETPACK_DEV_DEBUG 상수를 정의해야합니다.
jetpack_development_mode 필터 덕분에 플러그인을 통해 Jetpack의 개발 모드를 활성화 할 수도 있습니다.
add_filter( 'jetpack_development_mode', '__return_true' );
Jetpack v3.9부터는 사이트가 프로덕션 사이트가 아닌 준비 사이트로 강제 설정되도록하는 준비 모드 필터도 있습니다. https://developer.jetpack.com/hooks/jetpack_is_staging_site/
add_filter( 'jetpack_is_staging_site', '__return_true' );
@TracyRotton이 제공하는 링크의 방법은 Jetpack 2.0 및 WordPress 3.4.2 이후 작동하지 않는 것 같습니다.
모든 데이터베이스 필드를 복제하더라도 연결된 것으로 작동하지 않습니다.
OP 질문은 개발 환경과 프로덕션 환경의 동기화에 관한 것이므로 가능하지 않을 수 있습니다.
어떤 모듈이 작동하고 어떤 모듈이 작동하지 않는지 심층적으로 테스트하지는 않았지만 Jetpack은 파일에서 다음과 같이 수정하여 연결되어 있다고 생각할 수 있습니다 /plugins/jetpack/jetpack.php
.
클래스 내에서 다음과 같은 Jetpack_Data
첫 번째 함수를 수정하십시오 get_access_token
.
class Jetpack_Data {
function get_access_token( $user_id = false ) {
return 'USER_TOKENS-VALUE-FOUND-INSIDE-THE-OPTION-JETPACK_OPTIONS'; // <---trick
if ( $user_id ) {
if ( !$tokens = Jetpack::get_option( 'user_tokens' ) ) {
return false;
}
또는 단순히 옵션 내부에서 복사 할 수 있는 return true;
것 대신에 간단히 넣습니다 .user_tokens
jetpack_options
추신 : 이 답변 의 첫 번째 버전 은 또 다른 트릭을 사용했습니다. 여기, 이론적으로 모든 것을 잡는 한 줄 수정입니다.
force_user_connection()
방법 과 같이 개별 모듈을 해킹해야 할 수도 있습니다 publicize/publicize-jetpack.php
. 그럼에도 불구하고 실제로 연결되어있는 것과 똑같이 동작하지는 않습니다. 코드를 광범위하게 조사하지는 않았지만 실제 서버에서와 동일한 방식으로 코드를 실제로 실행하기 위해 해킹해야 할 부분이 더 많다는 의혹이 있습니다.
활성화 된 설치의 데이터베이스 필드 값을 로컬 설치로 복사하여 JetPack을 속일 수 있습니다.
JetPack이 연결된 설치 (원격) 에서 다음과 같이로 시작하는 필드를 wp_options
테이블에서 검색하십시오 .option_name
jetpack_
jetpack_activated
jetpack_options
jetpack_nonce_{random_string}
jetpack_active_modules
이 필드와 값을 로컬 설치 데이터베이스에 복사하십시오.
이 프로세스에 대한 자세한 내용은 http://www.ravendevelopers.com/node/57을 참조하십시오.
brasofilo의 최신 솔루션에서 영감을 얻은 더 쉬운 방법이 있습니다. jetpack.php를 열고 검색하십시오.
/**
* Is Jetpack active?
*/
public static function is_active() {
return (bool) Jetpack_Data::get_access_token( JETPACK_MASTER_USER );
}
그리고 이것을 대체하십시오 :
/**
* Is Jetpack active?
*/
public static function is_active() {
return true;
}
데이터베이스를 사용하는 것보다 훨씬 쉬운 것으로 보이며 Jetpack 버전 2.1.1
및 WordPress 버전으로 저를 위해 일했습니다. 3.5
그러나 활성 플래그를 하드 코딩하는 것보다 실제 방식으로 연결하는 것이 더 낫기 때문에 라이브 사이트에서 플러그인이 정상적으로 작동하도록하려면이 파일 또는 이와 유사한 규칙에 대해 무시 규칙을 설정해야합니다.
jetpack_development_mode
필터 :난 그냥 jetpack_development_mode
필터 를 언급하고 싶습니다 .
간단하게 사용할 수 있습니다 :
add_filter( 'jetpack_development_mode', '__return_true' );
JetPack을 로컬 로 실행 합니다.
wp-config.php
일반적인 트릭으로 파일 을 수정하지 않으려면 :
define ('JETPACK_DEV_DEBUG', true);
이제이 작은 플러그인을 통해 제어 할 수 있습니다 :
<?php
/**
* Plugin Name: Run JetPack locally
* Plugin URI: http://wordpress.stackexchange.com/a/144317/26350
* Version: 0.0.1
*/
add_filter( 'jetpack_development_mode', '__return_true' );
GitHub 에서 확인할 수 있습니다 .
http://ravendevelopers.com/node/57 의 수정 사항은 2.x 이상의 Jetpack 버전에서는 작동하지 않을 수 있습니다 . 버전 2.x에서 작동하지 않으면 먼저 (example.com)과 같이 라이브 사이트에 Jetpack을 설치하고 wordpress.com에 연결 한 다음 라이브 사이트의 설정을 로컬 사이트 / 예제로 가져 오십시오. 동일합니다 (example.com에서 가져온 설정은 localhost / example2에서 작동하지 않을 수 있음). 라이브 사이트에서 수행하는 작업은 가져온 설정이 로컬 호스트의 동일한 사이트에 대한 것인지 확인하십시오.
흠, 대답을 단순화 할 수있는 것 같습니다. 이 변경 사항을 채택하면 답변을 크게 투표하겠습니다.
is_active ()가 true를 리턴하므로 admin_page ()에서 한 줄만 변경하면됩니다.
1.
값 $is_user_connected
을true
function admin_page() {
global $current_user;
$role = $this->translate_current_user_to_role();
$is_connected = Jetpack::is_active();
$user_token = Jetpack_Data::get_access_token($current_user->ID);
$is_user_connected = true;//$user_token && !is_wp_error($user_token);
// ...function continues
is_active
JetPack 에는 두 가지 기능 이 있습니다. 이것이 솔루션이 중복 된 것처럼 보이지만 그렇지 않습니다. :)
Requires Connection
모듈 파일 (jetpack/modules/*.php
) 에서 헤더 를 찾습니다 . 이런 식으로 개발 모드에서 어떤 것이 작동하는지 확인할 수 있습니다.