it-swarm-ko.tech

is_plugin_active 함수가 존재하지 않습니다.

저는 WordPress 3.0.5를 사용하고 3.1rc4로 테스트했습니다. 내 플러그인의 main PHP 파일에서 is_plugin_active를 호출하려고하면 Call to undefined function is_plugin_active()을 얻습니다. add_action 및 add_filter를 호출 할 수 있습니다. 이 문제를 해결하려면 무엇을 확인/변경해야합니까?

이것은 플러그인 페이지의 관리자 내부에서 발생합니다. 내 메인 플러그인 파일 맨 위에, 항상 거짓을 반환하는 if (function_exists('is_plugin_active')) {이 있습니다.

나는 또한 다른 플러그인에서 내 메인 플러그인 파일의 기능을 볼 수 없다 (어떤 도움이된다면).

13
Carl

Is_plugin_active ()가 정의 된 파일 (wp-admin/includes/plugin.php)은 플러그인이로드 된 후 관리자에서만로드되기 때문입니다.

따라서 'admin_init'가 실행 된 후에 만 ​​호출 할 수 있습니다.

function check_some_other_plugin() {
  if ( is_plugin_active('some-plugin.php') ) {
    ...
  }
}
add_action( 'admin_init', 'check_some_other_plugin' );
23
scribu

템플릿 및 사용자 페이지에서도 is_plugin_active ()를 호출 할 수 있습니다. 이는 관련 플러그인 (예 : 새 플러그인을 작동시키는 데 'xyz 플러그인 필요')에 유용 할 수 있습니다. Codex의 is_plugin_active () 문서에 명시된대로 plugin.php 파일을 수동으로 포함시켜야합니다.

다음은 프리미엄 애드온 팩에서 사용하는 기능적인 예입니다. 애드온 오브젝트를 호출하기 전에 프리 플러스 플러그인이 활성화되어 있는지 확인하십시오. 기본 플러그인에서 특정 후크 및 필터를 사용할 수 있어야합니다. 그렇지 않으면 충돌이 발생합니다.

include_once(ABSPATH.'wp-admin/includes/plugin.php');
if (!function_exists('is_plugin_active') || !is_plugin_active('store-locator-le/store-locator-le.php')) { 
   return;
}

제쳐두고, 활성 admin 로그인 내에서 is_plugin_active ()에 문제가있는 경우 admin_init가 실행되기 전에 테스트 중이므로 가능성이 높습니다. admin_menu는 admin_init 전에 실행되고 admin_menu에서 테스트를 수행하면 이전에 "물린"상태가됩니다. admin_menu가 이미 실행 된 이후 나에게 직관적으로 보이는 "admin_init"이름. 나는 init을 "실행할 첫 번째 것"으로 생각한다. 어쩌면 admin_kinda_init ()가 더 좋을 것이다. :)

9
Lance Cleveland

빠르고 손쉬운 해결 방법은 함수를 수동으로 복제하는 것입니다.

function is_plugin_active( $plugin ) {
    return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
}

꽤 짧기 때문에 해결 방법으로 자신의 코드에 구현하는 것이 너무 어렵지 않아야합니다.

8
Tom Auger

간단하고 쉬운. 취한 WP

if ( ! function_exists( 'is_plugin_active' ) )
     require_once( ABSPATH . '/wp-admin/includes/plugin.php' );

그런 다음

 if ( is_plugin_active( 'feed-them-social/feed-them.php' ) ) {

   }

기능 검사를 받으십시오. SO 더 이상 오류가 없습니다.

4
Spencer Labadie

나는 plugin.php를 포함하는 대신에 is_plugin_active 함수를 정의하는 방법에 대한 Tom Auger의 대답을 선호했다. 그러나 동일한 함수 이름을 사용하면 내 관리 영역이 손상되었습니다. 다른 함수 이름을 사용하여 해결 :

function is_plugin_active_byme( $plugin ) {
    return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
}
3
Jeroen

활성 플러그인을 디버깅하려면 다음을 수행하십시오.

var_dump(get_option(...));

특정 플러그인을 확인하려면 다음을 수행하십시오.

in_array(get_option(...));

작업은 "active_plugins"IIRC라고합니다.

1
hakre

관리자 또는 프런트 엔드에서 is_plugin_active을 사용하고 있습니까? 나는 is_plugin_active가 wp-admin/includes/plugin.php 안에있는 관리 기능 일 뿐이라고 확신한다.

또한, 당신의 메인 플러그인 파일은 Wordpress File Header 를 사용합니까? 위의 plugin.php 파일이로드 된 후 플러그인이 포함되어 있습니까?

1
Jonnybojangles

이 솔루션들 중 어느 것도 나를 위해 일하지는 않았지만,

include_once('wp-admin/includes/plugin.php');

codebangers.com에서이 해결책을 찾았습니다.

0
fenderflip