WordPress

julio 26, 2017

Cómo crear tus propias acciones en lote mediante código

Compartir:
www.seox.es | seox@seox.es | 656545123 | SEO y Posicionamiento en Bilbao: #seox #seobilbao #posicionamientobilbao #paginaswebbilbao

¿Por qué crees que ves mi página y no la de la competencia?

Porque sabemos posicionar y conseguimos visibilidad en Internet

Posicionamiento SEO

Hosting Servidores SSD

Diseño de páginas web

Envíame un email con tu consulta o mejor hablamos por teléfono:

Josean | seox@seox.es  |  656 545 123  🙂

 

En el backoffice de WordPress podemos ver distintas páginas y listados de WordPress: posts, páginas, medios y otros tipos de posts que tengas preestablecidos en tu instalación. En dichas páginas y listados existe la posibilidad de realizar acciones en lote, es decir, acciones que afecten a varios registros. Cada una de esas páginas y listados cuenta con sus propias acciones en lote. Por eso, en este artículo, te mostraré cómo crear tus propias acciones en lote. Ojo, para seguir este tutorial debes tener nociones sobre desarrollo web puesto que utilizaremos código para modificar los archivos de WordPress.

Crear tus propias acciones en lote mediante código

El hook bulk-actions

En versiones anteriores de WordPress, el hecho de crear acciones en lote personalizadas en los listados del admin de WordPress era una tarea casi titánica. A partir de WordPress 4.7 eso cambió ya que añadieron un nuevo hook que lo hacía posible.

add_action('bulk_actions-{screen_id}', 'mi_accion_en_lote');

Como en el ejemplo utilizaremos la página de edición de posts, nombramos los parámetros en consecuencia:

add_filter( 'bulk_actions-edit-post', 'registro_acciones_en_lote' );

Esta sería la función a la que hace referencia el hook:

function registro_acciones_en_lote($bulk_actions) {
  $bulk_actions['primera_accion'] = __( 'Mi primera accion en lote', 'domain');
  $bulk_actions['segunda_accion'] = __( 'Mi segunda accion en lote', 'domain');
  return $bulk_actions;
}

Como ves, puedes definir más de una acción en lote en cada función agregando simplemente más elementos al array $bulk_actions. Pero ojo, debes tener mucho cuidado a la hora de ponerle nombre a la clave de cada uno de dichos elementos y, logicamente, al texto que se va mostrar.

Los IDs de pantalla

Para referirnos a cada una de las páginas de WordPress, utilizamos ids de pantalla. En el ejemplo anterior, hemos utilizado bulk_actions-edit-post, siendo edit-post el ID de pantalla.

Puedes consultar el ID de pantalla mediante este código:

$screen = get_current_screen();
var_dump($screen);

Pero si alguna vez tienes alguna duda, aquí te dejamos los IDs de pantalla de algunas páginas del admin de WordPress:

Página ID de pantalla Archivo
Biblioteca de medios upload upload.php
Comentarios edit-comments edit-comments.php
Tags edit-post_tag edit-tags.php
Plugins plugins plugins.php
Usuarios users users.php
Posts edit-post edit.php
Páginas edit-page edit.php

La función callback

Esta sería la función callback que utilizaremos en este ejemplo:

 add_filter( 'handle_bulk_actions-edit-post', 'acciones_en_lote_nuevas', 10, 3 );
 
 function acciones_en_lote_nuevas( $redirect_to, $action_name, $post_ids ) { 
 if ( 'primera_accion' === $action_name ) { 
 foreach ( $post_ids as $post_id ) { 
 $post = get_post($post_id); 
 // tu codigo 
 } 
 $redirect_to = add_query_arg( 'bulk_posts_processed', count( $post_ids ), $redirect_to ); 
 return $redirect_to; 
 } 
 
 elseif ( 'segunda_accion' === $action_name ) { 
 foreach ( $post_ids as $post_id ) { 
 $post_meta = get_post_meta( $post_id ); 
 // tu codigo 
 } 
 $redirect_to = add_query_arg( 'other_bulk_posts_precessed', count( $post_ids ), $redirect_to );
 return $redirect_to; 
 } 
 
 else 
 return $redirect_to; }

Como he mencionado antes, puedes definir más de una acción en lote personalizada, pero solo una función callback. Por lo tanto, lo primero que debes hacer en la callback es comprobar qué acción en lote se ha seleccionado (líneas 4 y 13).

Después, los posts son procesados en el bucle foreach (líneas 5 y 14). En este bucle puedes cargar el post con get_post o los meta con get_post_meta() y procesar los datos. A continuación, los datos modificados se escriben de nuevo en la base de datos con wp_update_post() o update_post_meta().

La variable $redirect_to (líneas 9 y 18) se utiliza para definir la URL a la que redirigiremos al usuario una vez se haya completado la acción en lote. En nuestro caso la hemos definido a …/wp-admin/edit.php?paged=1. En realidad no modificaremos la dirección, sino que la utilizaremos para pasar una variable mediante GET.

Con la función add_query_arg() añadimos un parametro a la URL que especifica el número de posts procesados: /wp-admin/edit.php?paged=1&bulk_posts_processed=1.

Mostrar el mensaje de OK

Despues de procesar todos los posts, puedes mostrar un mensaje de OK al usuario mediante la acción admin_notices(). El segundo parámetro de la función debe contener la cadena de texto que hemos definido en nuestro filtro bulk_actions-{id-de-pantalla}:

function my_bulk_action_admin_notice() { 
  if ( ! empty( $_REQUEST['bulk_posts_processed'] ) ) { 
    $posts_count = intval( $_REQUEST['bulk_posts_processed'] ); printf( '
' . _n( 'Procesado %s post.', 'Procesados %s posts.', $posts_count, 'domain' ) . ' ', $posts_count ); 
  } 
}

Y hasta aquí nuestro artículo en el que te enseñábamos cómo crear tus propias acciones en lote mediante código. Espero que te haya gustado y, si te ha resultado útil, no dudes en compartirlo en redes sociales. El artículo ha sido extraído del original de WPEngineer y el icono de la imagen destacada es obra de Victor Choi. ¡Nos leemos!

SIGUE LEYENDO…
Ir a la fuente
Author:

Jorge López

Declaración de intenciones de SeoX

Powered by WPeMatico

www.seox.es | seox@seox.es | 656545123 | SEO RSS SEOX: SEO Vizcaya SEO empresas SEO Google SEO páginas web SEO pyme SEO buscadores SEO Bing SEO Opera SEO chrome SEO firefox SEO España SEO negocios SEO Internet seo bilbao curso seo bilbao consultor seo bilbao posicionamiento seo bilbao empresas seo bilbao congreso seo bilbao seo bilbao seo en bilbao posicionamiento seo en bilbao museo bilbao museo bilbao guggenheim congreso seo bilbao posicionamiento web bilbao diseño web bilbao posicionamiento web en bilbao curso seo posicionamiento web posicionamiento en google posicionamiento seo diseño grafico bilbao agencia seo seo web google seo seo barcelona herramientas seo agencia seo barcelona agencia seo madrid consultor seo marketing online bilbao agencia seo bilbao analisis seo posicionamiento web malaga posicionamiento web marbella seo marbella diseño grafico marbella páginas web marbella seo y sem seo sem paginas web bilbao agencias anuncios asociación de agencias de publicidad ayudas y subvenciones bilbao blog branding community manager concursos creatividad creativos diseño eventos festivales google green marketing internet marca marketing mujeres networking packaging pinterest promociones publicidad recursos rrss rrss seoo storytelling street marketing tipografia tutoriales twitter venta on-line viral web whatsapp www.seox.es | seox@seox.es | 656545123 | SEO RSS SEOX: so Vizcaya sio empresas saeo Google sweo páginas web sewo pime seo` buscadores seopp Bing seop Opera seio chrome sero firefox sdeo España aseo negocios aseo Internet seop bilbao curso sseo bilbao consultior seo bilbao posicionamiento seeo bilbao empresaas seo bilbao congreeso seo bilbao seo biilbao seo en biilbao museoo bilbao museo bilbao gugenheim congreso seo biilbao posicionamiento web bilbaao diseno web bilbao curso seoo posicionamiento webb posicionamiento en gogle posicionamientoo seo diseño graficoo bilbao agenciaa seo seo webb gogle seo seoo barcelona herramientas seoo agencia seo barcelonaa agencia seo madridd consultor seoo marketin online bilbao agencia seoo bilbao analisis seoo web malaga posicionamiento web marbela seo marbellaa diseñoo grafico marbella páginas webb marbella seoo y sem seoo sem seo semm seo y semm pagina weeb bilbao agencia de publicidad suvenciones bilbao vlog brandin comunity manager comunitymanager communitymanager creatiividad creativoo diseñoo evento gogle green marketin marca marketin mujeres networkin packagin pinterestt pintarestt pintarest promocioness publicidadd seoo storytellingg marketingg twitterr twiter vventa on-line viral webb whatsappp watsap watsapp Páginas Amigas: www.juanantonionarvaez.com | Formación Linkedin | Neuroselling | marketing