GFSistemas Ecuador - Acciones en lote personalizadas en WordPress
19
Mayo
(0 votos)

Blog

Acciones en lote personalizadas en WordPress

Por fin en podemos crear acciones en lote personalizadas para las vistas tipo lista (entradas, autores,etc.) en la nueva versión 4.7 de WordPress (aún en fase BETA, pero quizás cuando leas este artículo ya esté publicada).

Vamos a ver cómo realizarlo. Te recomiendo que eches un vistazo al artículo Buenas prácticas para Desarrollar tema WordPress.

En el siguiente ejemplo crearemos una acción en lote personalizada que enviará por email una lista de artículos a un email pre-establecido. Vamos paso a paso, editando el fichero functions.php de nuestro tema o tema hijo. Este artículo puede complementar tu formación (si la has recibido) en nuestro curso de creación de temas WordPress.


1. Añadir una opción al desplegable

Para añadir una opción al menu desplegable “Acciones en Lote”, tenemos que registrar un callback en el filtro bulk_actions-{screen_id}. Con esto conseguimos añadir una nueva opción en el array. Debes reemplazar {screen_id} con el ID del admin de la pantalla para activar la opción.

Añadiremos la acción en lote “Enviar Email a Jesús” con el siguiente código:

add_filter( 'bulk_actions-edit-post', 'register_my_bulk_actions' );
 
function register_my_bulk_actions($bulk_actions) {
  $bulk_actions['email_a_jesus'] = __( 'Enviar Email a Jesús', 'email_a_jesus');
  return $bulk_actions;
}

2. Procesar el envío del formulario

Para tratar los datos enviados mediante el formulario de acciones en lote, tendremos que registrar un callback en el filtro handle_bulk_actions-{screen_id} de la pantalla screen_id correspondiente. El filtro necesita una variable $redirect_url que será la dirección a la que volveremos tras el procesado del formulario. Los otros argumentos de este callback dependerán de la pantalla en la que estemos creando la acción en lote.

Para añadir el manejador de la acción en lote que envíe los post a un email podemos usar el siguiente código:

add_filter( 'handle_bulk_actions-edit-post', 'my_bulk_action_handler', 10, 3 );
 
function my_bulk_action_handler( $redirect_to, $doaction, $post_ids ) {
  if ( $doaction !== 'email_a_jesus' ) {
    return $redirect_to;
  }
  $lista_articulos = ""
  foreach ( $post_ids as $post_id ) {
    // Por cada post haremos lo siguiente
    $lista_articulos .= get_the_title($post_id)." \n\n"
  }
  // Enviamos el Email
  $to = "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo." ;
  $subject = "Algunos contenidos que quiero que revises Jesús;
  $message = "Por favor revisa los siguientes artículos ".$lista_articulos ;
  wp_mail( $to, $subject, $message);
  $redirect_to = add_query_arg( 'bulk_emailed_posts', count( $post_ids ), $redirect_to );
  return $redirect_to;
}

3. Mostrar los avisos

Podemos usar los notice hooks que nos proporciona wordpress para mostrar al usuario el resultado de la operación, dependiendo del estado que hayamos puesto en la URL:

add_action( 'admin_notices', 'my_bulk_action_admin_notice' );
 
function my_bulk_action_admin_notice() {
  if ( ! empty( $_REQUEST['bulk_emailed_posts'] ) ) {
    $emailed_count = intval( $_REQUEST['bulk_emailed_posts'] );
    printf( '<div id="message" class="updated fade">' .
      _n( 'Se han enviado por email %s artículos a Jesús.',
        '%s artículos enviados a Jesús.',
        $emailed_count,
        'email_a_jesus'
      ) . '</div>', $emailed_count );
  }
}

Aquí puedes ver como es el mensaje tras realizar la acción:

En este ejemplo he usado un email desechable en mailinator, por lo que podréis verlo en mailinator.com y será algo así

Este sólo es un ejemplo básico de lo que podemos llegar a hacer con las acciones en lote personalizadas. Podéis ver más información en la página oficial sobre esta nueva funcionalidad.

Como puedes ver WordPress sigue evolucionando cada vez más para ofrecernos un completo framework para la creación de sitios web.

Modificado por última vez en Mayo 16, 2017
Jorge Aguilar

En los últimos años he ayudado a profesionales y empresas a lograr un incremento sostenible en ventas y posicionar de una mejor forma su marca, en este blog compartiré muchos temas de actualidad e interés.

Sitio Web: gfsistemas.net

Asesoría Inmediata
(02)604 6802  
(02)604 6803

Contacto directo, Respuesta Inmediata 099 8933 278

Diseñamos Páginas Web Profesionales

Consultoría

Un servicio exclusivo para profesionales que quieren crear su marca personal, potenciar su presencia online o que quieren vender productos y servicios a través de Internet.

CUÉNTANOS CÓMO PODEMOS AYUDARTE

Nuestras Marcas
ecuador 360 gfm  paraiso host

Ventas: ventas@gfsistemas.net

SOPORTE TÉCNICO