O WordPress 4.7 vai permitir que os desenvolvedores criem ações em massa personalizadas gerenciar as listas de conteúdo do painel administrativo. A novidade foi anunciada ontem, por Eric Andrew Lewis, no blog Make WordPress.
Agora desenvolvedores serão capazes de adicionar qualquer tipo de ações em massa utilizando os filtros bulk_actions-{screen_id}
e handle_bulk_actions-{screen_id}
.
Veja um exemplo de como implementar:
/** * Registra a ação em massa personalizada * utilizando o filtro bulk_actions-{screen_id} * * @param array $actions Ações em massa. * @return array */ function my_register_post_bulk_actions( $actions ) { // Adicionando nossa nova ação em massa // com o ID "send_by_email" e título "Enviar por e-mail". $actions['send_by_email'] = __( 'Enviar por e-mail', 'textdomain' ); return $actions; } add_filter( 'bulk_actions-edit-post', 'my_register_post_bulk_actions' ); /** * Lida com as ações em massa personalizadas * utilizando o filtro handle_bulk_actions-{screen_id} * * @param string $redirect_to URL para redirecionar. * @param string $action ID da ação em massa. * @param array $post_ids Conjunto de IDs dos posts. * @return string */ function my_post_bulk_action_handler( $redirect_to, $action, $post_ids ) { // Verifica se é o ID da nossa ação em massa // e se não for return $redirect_to. if ( 'send_by_email' !== $action ) { return $redirect_to; } // Processa a ação em massa "send_by_email" // para todos os posts selecionados. foreach ( $post_ids as $post_id ) { // Código aqui processando a ação em massa. } // Retorna de link adicionando o total de posts que foram // processados nesta ação em massa usando /?bulk_emailed_posts=X return add_query_arg( 'bulk_emailed_posts', count( $post_ids ), $redirect_to ); } add_filter( 'handle_bulk_actions-edit-post', 'my_post_bulk_action_handler', 10, 3 ); /** * Exibe mensagens sobre a nossa ação em massa personalizada * utilizando o action "admin_notices". */ function my_bulk_action_admin_notice() { if ( ! empty( $_REQUEST['bulk_emailed_posts'] ) ) { $total = intval( $_REQUEST['bulk_emailed_posts'] ); printf( '<div id="message" class="updated fade">' . _n( '%d post foi enviado por e-mail.', '%d posts foram enviados por e-mail.', $total, 'textdomain' ) . '</div>', $total ); } } add_action( 'admin_notices', 'my_bulk_action_admin_notice' );
Essa funcionalidade resolve um ticket criado 6 anos atrás, foi uma longa discussão e muitas linhas de código para chegar no resultado final, e provavelmente tornará alguns plugins que foram criados para atender essa necessidade obsoletos com o tempo.
Agora basta esperar até o lançamento do WordPress 4.7, que deve acontecer no dia 6 de Dezembro de 2016.
Powered by WPeMatico