¿Cómo puedo añadir un evento jQuery OnClick al botón de Publicar entradas?

11 ene 2013, 20:45:54
Vistas: 4.36K
Votos: 4

Quiero añadir un simple evento de confirmación al botón de Publicar entradas, para que cuando mi cliente pulse "Publicar" le pregunte si está seguro, pudiendo hacer clic en "Sí" o "cancelar" y la entrada se publique o no.

Soy nuevo en WordPress... o al menos solo he hecho programación de temas y plugins limitados. Encontré el código del metabox para el botón "Publicar" en edit-form-advanced.php:

add_meta_box('submitdiv', __('Publicar'), 'post_submit_meta_box', null, 'side', 'core');

Pero para lograrlo, sospecho que necesitaré añadir el código jQuery en otro lugar - preferiblemente en mi tema.

Por razones específicas del sitio, no puedo añadir nuevos plugins a esta instalación, así que los cambios deben limitarse al archivo functions.php de mi tema.

2
Comentarios

El número de plugins que usa un sitio es irrelevante, lo que importa es lo que cada plugin hace. La misma solución añadida directamente a tu tema o mediante un plugin coloca una carga idéntica en tu sitio.

Milo Milo
11 ene 2013 21:10:32

Sí. Bueno, no estoy aquí para debatir los detalles más finos sobre cuántos plugins hacen qué, solo estoy realmente interesado en obtener una respuesta a mi pregunta que evite tener que usar un plugin para lograr mi objetivo. No tengo problema en añadir código al tema de este sitio... uno de los cientos que tengo en mi instalación multisitio.

Lynn Lynn
11 ene 2013 21:56:15
Todas las respuestas a la pregunta 2
6

Puedes engancharte a las acciones del pie de página del post (basado en esta respuesta, no probado):

add_action( 'admin_footer-post-new.php', 'wpse_80215_script' );
add_action( 'admin_footer-post.php', 'wpse_80215_script' );

function wpse_80215_script()
{
    if ( 'post' !== $GLOBALS['post_type'] )
        return;

    ?>
<script>
document.getElementById("publish").onclick = function() {
    if ( confirm( "¿Listo?" ) )
        return true;

        return false;

}</script>
    <?php
}

Estas acciones son llamadas en wp-admin/admin-footer.php:

do_action( "admin_footer-" . $GLOBALS['hook_suffix'] );

Este código puede usarse en un plugin (preferible) o en el functions.php de tu tema.
Ver también:

11 ene 2013 20:57:15
Comentarios

Ok, agregué el código anterior en mi archivo functions.php y no pasó nada. ¿Es correcto asumir que el script js va en el archivo admin_footer? En este caso, primero probé el código agregando el fragmento completo anterior a functions.php...

Lynn Lynn
11 ene 2013 23:02:31

Sí, solo agrega todo al functions.php. Lo he probado ahora y funciona.

fuxia fuxia
11 ene 2013 23:06:48

También... algo que me confunde... no veo ningún archivo en wp-admin llamado admin_footer-post-new.php o admin_footer-post.php. Solo está admin-footer.php que parece un archivo bastante simple. ¿Esto podría hacer que mis hooks no funcionen?

Lynn Lynn
11 ene 2013 23:25:25

@Lynn Mira mi actualización.

fuxia fuxia
11 ene 2013 23:29:33

Gracias. Ahora lo veo. Estaba poniendo todo en funciones. Enlaces informativos también.

Lynn Lynn
11 ene 2013 23:40:25

Funciona y, por diversión, lo probé como un plugin. Gracias por tu ayuda.

Lynn Lynn
12 ene 2013 00:19:44
Mostrar los 1 comentarios restantes
1

Hay un plugin de WordPress para eso:

Confirm Publishing Actions es un plugin de WordPress que solicita al usuario que haga clic en un botón de confirmación (o cancelar) cada vez que intenta enviar, publicar, actualizar o eliminar una entrada de WordPress.

11 ene 2013 20:49:57
Comentarios

Desafortunadamente, estoy en una posición en la que no me permiten agregar un plugin a la instalación multisitio. Está sufriendo mucho por la acumulación excesiva de plugins y simplemente no es una opción.

Lynn Lynn
11 ene 2013 20:55:29