Tengo un complemento que no deseo que se active si no cumple con un cierto número de versión de WP, luego se muestra un mensaje de error en el enlace de acción admin_notices. Hasta donde he investigado, el siguiente código es el mejor que puedo lograr este objetivo:
$wp_version = get_bloginfo('version');
if ( $wp_version < 4.5 ) {
add_action( 'admin_init', 'deactivate_plugin_now' );
add_action( 'admin_notices', 'errormsg' ) );
}
public function deactivate_plugin_now() {
if ( is_plugin_active('myplugin/myplugin.php') ) {
deactivate_plugins('myplugin/myplugin.php');
}
}
public function errormsg () {
$class = 'notice notice-error';
$message = __( 'Error you did not meet the WP minimum version', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
}
Pero creo que todavía lo estoy haciendo mal porque recibo el mensaje de activación del complemento al mismo tiempo con el aviso de error que asigné.
¿Cuál sería la acción correcta de enganchar / filtrar para detener correctamente el proceso de activación del complemento para que solo reciba el mensaje de error?
plugins
plugin-development
Carl Alberto
fuente
fuente
Respuestas:
Puede que llegue tarde a esta fiesta, pero para detener la activación del complemento y hacer que WordPress muestre un mensaje de error donde van los avisos del administrador, simplemente envío un mensaje de error y finalizo la ejecución. Esto tiene la ventaja adicional de jugar bien con wp-cli :
Ejemplo:
fuente
Esencialmente, no puedes hacerlo como quieras. Todos los formularios de WordPress se redirigen después de completar su proceso y no generan resultados por sí mismos y, por lo tanto, el mensaje de error se genera en una solicitud de página diferente. Si su complemento no estará activo en ese punto, no se mostrará ningún mensaje. Una complicación adicional es que los complementos pueden ser activados por Ajax.
Una forma fea pero funcional es fallar la activación generando un error de php, o IIRC hará cualquier salida, por lo que puede generar algo como "desajuste de versión" en el enlace de activación del complemento, que se mostrará en el cuadro de salida de error que se muestra cuando falla la activación.
Algo en lo que pensar: las personas pueden incluir sus archivos de complemento, o de alguna manera activarlo de manera forzosa omitiendo la interfaz de usuario o usando wp-cli. dependiendo de las razones por las que desea fallar la activación, solo tener el mensaje de error podría ser mejor que intentar fallar la activación
fuente
Como actualizó el título, necesito proporcionar la otra respuesta, la anterior, por favor, no la ignore porque es aún más simple que esta.
Tenga en cuenta que cuando intenta activar el complemento, interactúa con el archivo plugins.php. Ahí tienes un gran interruptor de acciones que puedes ejecutar.
Y en caso de que tenga el error establecido
$_GET['error']
en el momento en que tiene solo los mensajes de error predefinidos, no puede crear su propio mensaje personalizado. Es por eso que te propuse la solución como esta.Uno puede proponer los mensajes personalizados como avisos de administrador al núcleo de WordPress en caso de que los complementos no cumplan con algunos requisitos.
fuente
admin_notices
.¿Qué tal este código para suprimir hello.php (Hello Dolly) si WP <8.5:
Creo que esto es bueno porque no te obliga a crear avisos de administrador. Simplemente recibirá comentarios sobre el motivo del aborto de la instalación del complemento.
Agregué este código para HelloDolly, pero deberá ajustarlo.
fuente