Ver resultados cuando se activa el error "El complemento generó x caracteres de resultados inesperados durante la activación"

4

Estoy trabajando en un complemento y tengo algunas dificultades para crear una nueva tabla. Recibo el error "El complemento generó x caracteres de salida inesperada durante la activación". ¿Hay alguna forma de ver el error real? Creo que hay una redirección involucrada en este proceso, de ahí la razón por la que no veo la salida del error real. Tengo todos los informes de error y el inicio de sesión, pero todavía no obtengo nada.

    
pregunta tollmanz 28.07.2011 - 02:27

3 respuestas

2

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 .

    
respondido por el chrisguitarguy 03.02.2013 - 06:22
1

Pregunta interesante, así que eché un vistazo a Google y un tipo llamado Jason tuvo una solución:

br_trigger_error('Some error message', E_USER_ERROR);

function br_trigger_error($message, $errno) {
  if(isset($_GET['action'])
      &amp;&amp; $_GET['action'] == 'error_scrape') {
    echo '<strong>' . $message . '</strong>';
    exit;
} else {
    trigger_error($message, $errno);
}
}

De enlace que también tiene más detalles.

    
respondido por el Lars Koudal 10.08.2012 - 17:54
0

Acabo de encontrar una manera, todos los accesorios para itzco y hungrycoder . He añadido los parámetros de gancho.

add_action( 'activated_plugin', 'save_error_wpse_24278', 10, 2 );

function save_error_wpse_24278( $plugin, $network_wide )
{
    file_put_contents( 
        WP_CONTENT_DIR. '/error_activation.html', 
        $plugin . ob_get_contents() 
    );
    //update_option( 'plugin_error',  ob_get_contents() );
}
    
respondido por el brasofilo 03.02.2013 - 05:03

Lea otras preguntas en las etiquetas