plugin-development – Verifique el complemento dependiente y, si es falso, no active el complemento

Pregunta:

Estoy creando un complemento para WordPress y este complemento depende de otro complemento con una versión específica. Si habilito mi complemento sin el complemento dependiente, hay un error fatal. ¿Hay alguna forma de comprobar esto?

Intenté mirar el código fuente, pero WP no proporciona ningún gancho para esto.

Gracias por adelantado.

–ACTUALIZAR–

No estoy preguntando sobre cómo verificar el complemento instalado o sobre los datos del complemento, pero quiero saber "cómo verificar si existe un dependiente y si no se muestra una advertencia y no se activa el complemento".

Respuesta:

Estaba buscando la misma respuesta esta mañana para mi complemento AnsPress. Así que me colé en el complemento de WordPress wp-admin/includes/plugin.php y tuve una idea.

WordPress verifica si hay un error fatal al activar el complemento, por lo que la solución más simple provocará un error fatal y esto evitará que WordPress active el complemento.

En mi código a continuación, verifico si existen archivos de complemento, luego obtengo la versión del complemento y si la versión dependiente inferior activa un error.

function anspress_activate( $network_wide ) {
    //replace this with your dependent plugin
    $category_ext = 'categories-for-anspress/categories-for-anspress.php';

    // replace this with your version
    $version_to_check = '1.3.5'; 

    $category_error = false;

    if(file_exists(WP_PLUGIN_DIR.'/'.$category_ext)){
        $category_ext_data = get_plugin_data( WP_PLUGIN_DIR.'/'.$category_ext);
        $category_error = !version_compare ( $category_ext_data['Version'], $version_to_check, '>=') ? true : false;
    }   

    if ( $category_error ) {
        echo '<h3>'.__('Please update all AnsPress extensions before activating. <a target="_blank" href="http://anspress.io/questions/ask/">Ask for help</a>', 'ap').'</h3>';

        //Adding @ before will prevent XDebug output
        @trigger_error(__('Please update all AnsPress extensions before activating.', 'ap'), E_USER_ERROR);
    }
}

register_activation_hook(__FILE__, 'anspress_activate');

Puede que esta no sea una solución elegante, pero funciona. no dude en actualizar esta respuesta.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım