Es interesante que la capacidad de mostrar errores y resultados de un complemento en la activación parece estar integrada en WordPress. Si echas un vistazo a wp-admin/plugins.php
, hay un caso en la instrucción de cambio $action
que dice error_scrape
- insinuado en la respuesta de Lars.
Se parece a esto:
<?php
// wp-admin/plugins.php
case 'error_scrape':
if ( ! current_user_can('activate_plugins') )
wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
check_admin_referer('plugin-activation-error_' . $plugin);
$valid = validate_plugin($plugin);
if ( is_wp_error($valid) )
wp_die($valid);
if ( ! WP_DEBUG ) {
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
}
@ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
// Go back to "sandbox" scope so we get the same errors as before
function plugin_sandbox_scrape( $plugin ) {
include( WP_PLUGIN_DIR . '/' . $plugin );
}
plugin_sandbox_scrape( $plugin );
do_action('activate_' . $plugin);
exit;
break;
Como puede ver, imita el senario de activación del complemento, pero en realidad no lo activa. Incluye el archivo de complemento, llama al gancho de activación y luego sale. Hace todo esto sin búfer de salida para que pueda ver lo que está sucediendo.
SO, si ya está ahí, solo tenemos que exponerlo. Un poco de excavación en wp-admin/plugins.php
muestra que necesitamos un nonce para verificar. Así que podemos copiar eso y estudiar cómo la tabla de la lista de complementos construye sus enlaces de activación. Luego, simplemente agregue un enlace de error en los complementos inactivos. Haz clic en él y ve tus errores.
Solo enganche en plugin_action_links
y agregue el enlace:
<?php
add_filter('plugin_action_links', 'wpse24278_add_scrape', 10, 2);
/**
* Add an "Error Scrape" action to inactive plugins.
*
* @uses is_plugin_active
* @return array
*/
function wpse24278_add_scrape($actions, $plugin)
{
global $status, $page, $s;
// leave active plugins alone
if (is_plugin_active($plugin)) {
return $actions;
}
// build the url, identical to the activate URL, see the
// plugings list table for more information.
$url = add_query_arg(array(
'action' => 'error_scrape',
'plugin' => $plugin,
'plugin_status' => $status,
'paged' => $page,
's' => $s,
), admin_url('plugins.php'));
// add our action.
$actions['error_scrape'] = sprintf(
'<a href="%s" title="%s" class="edit">%s</a>',
wp_nonce_url($url, 'plugin-activation-error_' . $plugin), // see 'wp-admin/plugins.php' for the nonce name
esc_attr__('Check for Errors', 'wpse'),
esc_html__('Error Scrape', 'wpse')
);
return $actions;
}
Aquí está el envuelto en un complemento .