bestsource

WordPress 플러그인이 설치되어 활성화되었는지 확인하는 방법

bestsource 2023. 3. 25. 11:38
반응형

WordPress 플러그인이 설치되어 활성화되었는지 확인하는 방법

WordPress에 Yoast SEO가 설치되어 있는지 확인하고 싶습니다.테스트 환경에서 Yoast SEO를 활성화했지만 제대로 작동하지 않습니다.

wp-seo-main에서.Yoast의 php는 16번째 줄에 다음과 같은 행이 있습니다.

define( 'WPSEO_VERSION', '3.4' );

그래서 Yoast가 설치되고 실행 중인지 확인하기에 좋은 라인이라고 생각했습니다.그래서 저는 다음과 같이 했습니다.

if ( defined( 'WPSEO_VERSION' ) ) {
    echo '<script>alert("Yes, defined");</script>';
} else {
    echo '<script>alert("No, undefined");</script>';
}

하지만 "아니, 정의되지 않았어"라고 말해줍니다.참 이상하네, 정의해야 하는데

좋은 생각 있는 사람?아이디어가 전혀 없어요.

또는 추가 포함물이 없는 경우 프론트 엔드 또는 백 엔드:

if ( in_array( 'wordpress-seo/wp-seo.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    // do stuff only if Yoast is installed and active
}

모든 플러그인과 함께 사용할 수 있습니다. 타겟의 플러그인 폴더를 살펴보기만 하면 됩니다.plugin-folder/plugin-index-name.php여기서 후자의 shuld는 파일 내의 맨 위에 있는 플러그인 세부사항을 상주합니다.

문서 참조를 확인하십시오.

Jonas Lundman의 답변에 영감을 받아 Yast Premium이 활성화 되어 있을 때에도 대처하기 위해 이 글을 썼습니다.

function is_yoast_active() {
    $active_plugins = apply_filters( 'active_plugins', get_option( 'active_plugins' ) );

    foreach ( $active_plugins as $plugin ) {
        if ( strpos( $plugin, 'wp-seo' ) ) {
            return true;
        }
    }

    return false;
}
$all_plugins = get_plugins();

//print_r( $all_plugins );

if( array_key_exists( 'woolementor/woolementor.php', $all_plugins ) ){

     //do something
}

지금까지 잘해준 다른 모든 사람들 덕분이에요!그러나 이 질문은 플러그인이 설치되어 있는지 확인하는 것이기도 합니다.또한 모든 답변은 플러그인이 활성화 되어 있는지 확인하는 것에 관한 것입니다.

그래서 저는 운동장에 가서 WP가 이미 제공한 기능을 사용하여 보여드리고 싶은 올바른 체크체크를 개발했습니다.

// Check if needed functions exists - if not, require them
if ( ! function_exists( 'get_plugins' ) || ! function_exists( 'is_plugin_active' ) ) {
    require_once ABSPATH . 'wp-admin/includes/plugin.php';
}

/**
 * Checks if Yoast SEO is installed
 *
 * @return bool
 */
function is_wp_seo_installed(): bool {
    if ( check_plugin_installed( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if Yoast SEO is activated
 *
 * @return bool
 */
function is_wp_seo_active(): bool {
    if ( check_plugin_active( 'wordpress-seo/wp-seo.php' ) ) {
        return true;
    }

    return false;
}

/**
 * Check if plugin is installed by getting all plugins from the plugins dir
 *
 * @param $plugin_slug
 *
 * @return bool
 */
function check_plugin_installed( $plugin_slug ): bool {
    $installed_plugins = get_plugins();

    return array_key_exists( $plugin_slug, $installed_plugins ) || in_array( $plugin_slug, $installed_plugins, true );
}

/**
 * Check if plugin is installed
 *
 * @param string $plugin_slug
 *
 * @return bool
 */
function check_plugin_active( $plugin_slug ): bool {
    if ( is_plugin_active( $plugin_slug ) ) {
        return true;
    }

    return false;
}

보시다시피 두 가지 함수를 작성해서Yoast SEO이 인스톨 되어 액티브하게 되어 있기 때문에, 콜 해 반환 파라미터를 체크하는 것만으로 끝납니다.

$installed = is_wp_seo_installed();
$active    = is_wp_seo_active();

if ( $installed && $active ) {
    echo 'WP SEO is installed and active!';
} else {
    echo 'WP SEO is not installed or active!';
}

그러나 이 두 가지 추가 함수를 건너뛰려면 두 가지 체크 함수를 직접 호출할 수 있습니다.

$installed = check_plugin_installed( 'wordpress-seo/wp-seo.php' );
$active    = check_plugin_active( 'wordpress-seo/wp-seo.php' );

if ( $installed && $active ) {
    echo 'Yoast SEO is installed and active!';
} else {
    echo 'Yoast SEO is not installed or active!';
}

이것이, 인스톨 되어 액티브한 체크에 도움이 되었으면 합니다.

다음 코드 사용:

 <?php include_once ABSPATH . 'wp-admin/includes/plugin.php'; ?>
 <?php if ( is_plugin_active( 'wordpress-seo/wp-seo.php' ) ) :

      //do staff

 <?php endif; ?>

이게 나한테 효과가 있었어.

if(count(
        preg_grep(
            '/^wordpress-seo.*\/wp-seo.php$/',
            apply_filters('active_plugins', get_option('active_plugins'))
        )
    ) != 0
){
    // Plugin activated
}

모든 활성 플러그인 이름을 가져오려면 선택하십시오.

$callback = function($key){
    $key = explode('/', $key);
    return $key[0];                                        
}

$active_plugins = array_map($callback, get_option( 'active_plugins' ) );

언급URL : https://stackoverflow.com/questions/38595044/how-to-check-if-wordpress-plugin-is-installed-and-activated

반응형