Cómo atender errores en activación de plugins (WordPress)

enero 28, 2010 • Publicado en Software y Hardware
Etiquetas:

Todo lenguaje de programación multi-propósito debe tener entre sus funciones primitivas algúna rutina para desencadenar errores, y todo buen programador deberá conocer métodos para aplicar estas rutinas y atenderlas en sus desarrollos.

Básicamente hay 2 tipos de errores: las advertencias y los errores fatales. El primer grupo lo componen los errores que pueden ser atendidos en el mismo algoritmo, como por ejemplo una versión antigua de un descriptor que deberá ser actualizada. El segundo grupo se compone por errores que no pueden ser atendidos desde el proceso, como por ejemplo tratar de crear un archivo dentro de un directorio para el que no tenemos permisos de escritura.

Si al momento de activar un plugin en WordPress se descubre un error fatal que podría alterar su nomal funcionamiento, es recomendable hacer un llamado a las rutinas que detienen la activación e informar al usuario del error por el cuál no se concluyó la activación correctamente.

El siguiente es un ejemplo documentado de un plugin con estas rutinas de atención a a errores.

<?php
add_action('init', 'text_domain',1); // Función para i18n
add_action('activate_plugin', 'activate'); // Función para activar

// La rutina de errores. Si en la función de activación de WP se detecta un error
// se llamará de nuevo al archivo del plugin con el argumento 'error_scrape'
if ($_GET['action'] == 'error_scrape') {
	// Activar el i18n en forma manual. Esta es una función propia del plugin, no es
	// una primitiva de PHP ni hace parte de las funciones de WP
	text_domain();

	// Deducir el path del directorio cache
	$ans = parse_url(get_bloginfo('wpurl'));
	$cache_dir = $_SERVER['DOCUMENT_ROOT'].$ans['path'].'/wp-content/cache';

	// Error 1: si no existe el directorio cache significa que el error se
	// activó porque no se pudo crear el directorio. Informar al ausuario.
	if(!file_exists($cache_dir.'/plug')) {
		die(sprintf(__("Can't create the cache dir: %s
You have to create it manually.", 'plug'), $cache_dir.'/plug/'));
	}

	// Error 2: si no se puede escribir en el directorio es porque no tenemos los
	// permisos para hacerlo
	if($handle = @fopen($cache_dir.'/plug/test.txt','w')) {
		//Sí se pudo crear el archivo, así que lo eliminamos
		fclose($handle);
		unlink($cache_dir.'/plug/test.txt');
	} else {
		// No se pudo crear el archivo. Informar al ausuario.
		die(sprintf(__("Can't write in the cache dir: %s
You have to modify the permissions manually.", 'plug'), $cache_dir.'/plug/'));
	}
}

// Función de i18n
function text_domain() {
	load_plugin_textdomain('plug', 'wp-content/plugins/plug/lang');
}

// Función para activar el plugin
function activate()
{
	// Deducir el path del directorio cache
	$ans = parse_url(get_bloginfo('wpurl'));
	$cache_dir = $_SERVER['DOCUMENT_ROOT'].$ans['path'].'/wp-content/cache';

	// Tratar de crear el directorio cache
	if(!file_exists($cache_dir)) mkdir($cache_dir);
	if(!file_exists($cache_dir.'/plug')) mkdir($cache_dir.'/plug');

	//Error 1: pudimos crear el directorio?
	if(!file_exists($cache_dir.'/plug')) {
		// Hacer el llamado a la rutina de errores
		trigger_error('Plug-error: #1', E_USER_ERROR);
	}

	//Error 2: podemos escribir en el cache?
	if($handle = fopen($cache_dir.'/plug/test.txt','w')) {
		// Si podemos, así que eliminams el archivo
		fclose($handle);
		unlink($cache_dir.'/plug/test.txt');
	} else {
		// No pudimos, entonceds hacer el llamado a la rutina de errores
		trigger_error('Plug-error: #2', E_USER_ERROR);
	}
}
?>

2 Respuestas a “Cómo atender errores en activación de plugins (WordPress)”

  1. Buenas, lal estar en worpres quiero instalar plugin los guarda pero no los actica y manda un mensaje como este, que puedo hacer.

    /www.aprodesa.org/wp-admin/plugins.php?action=activate&plugin=add-link-to-facebook%2Fadd-link-to-facebook.php&_wpnonce=c158d19e56 http://www.aprodesa.org/wp-admin/plugins.php?action=activate&plugin=add-link-to-facebook%2Fadd-link-to-facebook.php&_wpnonce=c158d19e56. Es posible que esta esté inactiva debido a tareas de mantenimiento o que se haya configurado de forma incorrecta.

  2. Hola Sebastian, la verdad estoy buscando ayuda en internet para solucionar mi problema porque soy autodidacta y todo lo que he hecho en mi pagina ha sido de esta forma, hace unos dias instale un plugin (manifiesto de la caché)en mi pagina que esta en wordpress, luego de activar este plugin me sale este error y ya no me deja ingresar al dashboard: Advertencia : array_merge () [ function.array-merge ]: Argument # 1 no es una matriz en / home/content/30/10671730/html/wp-includes/post.php on line 2996
    Error al crear el manifiesto de la caché, por favor no se que hacer ayudame!!

Dejar un Comentario