Mostrar mensaje después de activar el complemento de WordPress

2 minutos de lectura

Quiero mostrar un mensaje de activación después de activar el complemento.

He visto algunas preguntas en SO sobre esto, pero ninguna funciona correctamente:

if (!get_option("startup")) {
    echo "<div class="updated"><h3>Welcome to [name]</h3>";
    update_option('startup', 'true');
}

Eso funciona… un poco. Pone el HTML en la parte superior, incluso antes de la <!DOCTYPE>. ¿Hay alguna manera de ponerlo en el lugar correcto? Entonces, ¿en la etiqueta del cuerpo?

  • ¿Intentaste llamarlo en el lugar correcto?

    – SHR

    6 de julio de 2016 a las 23:41

Hay algunas cosas que tendrás que hacer aquí. En primer lugar, el register_activation_hook() función se utiliza para conectarse a la activación de su complemento. Y el admin_notices acción se usa para agregar un aviso dentro del área de administración (no puede simplemente imprimir su aviso en cualquier lugar).

Sin embargo, hay una complicación adicional en la que usted no poder utilizar el admin_notices acción en la activación del complemento. Esto se debe a que WordPress no ‘activa en vivo’ su complemento: lo activa en segundo plano y suprime la salida para asegurarse, antes de completar la activación, de que no provoque ningún error fatal.

Afortunadamente, esta entrada de blog describe una solución a este problema. El autor de la publicación sugiere usar transitorios para guardar el ‘estado’ de su complemento para que pueda recuperarse una vez que se haya activado.

Debido a que ese blog tiene una licencia CC-BY-SA como este sitio, copiaré el código aquí para que siga vivo. Lo he condensado ligeramente para reducir la longitud de esta publicación, pero puede ver toda la entrada del blog para la solución completa. También probé esto para asegurarme de que todavía funciona, y lo hace en mi instalación de WordPress 4.5.3.

register_activation_hook( __FILE__, 'fx_admin_notice_example_activation_hook' );

function fx_admin_notice_example_activation_hook() {
    set_transient( 'fx-admin-notice-example', true, 5 );
}

add_action( 'admin_notices', 'fx_admin_notice_example_notice' );

function fx_admin_notice_example_notice(){

    /* Check transient, if available display notice */
    if( get_transient( 'fx-admin-notice-example' ) ){
        ?>
        <div class="updated notice is-dismissible">
            <p>Thank you for using this plugin! <strong>You are awesome</strong>.</p>
        </div>
        <?php
        /* Delete transient, only display this notice once. */
        delete_transient( 'fx-admin-notice-example' );
    }
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad