WordPress Admin – Como Registrar Ações em Massa

0

A disponibilidade de um filtro na aréa administrativa do WordPress (WordPress Admin) que execute ações em massa, sendo, em vários registros, se faz necessária automatizando processos para o administrador do site, ao invés de executar uma ação para cada registro.

Ações em massa nas Versões do WordPress

Esta funcionalidade apareceu no WordPress 3.1 alguns plugins já utilizavam para executar algumas ações em massa. Na versão WordPress 4.7 se tornou mais flexível permitindo remover itens padrões de ações em massa, registrar novas para qualquer parte da área administrativa.

Acompanhe em primeira mão tudo sobre o WordPress

Quem poderá criar estas funcionalidades?

Poderão ser criadas pelos desenvolvedores uma vez que exigirá modificação no código fonte.

Exemplificação da Funcionalidade

É bem simples a criação da ação em massa, em três passos vamos criar uma funcionalidade de envio de e-mail para todos os usuários da área administrativa selecionados.

Inserindo a funcionalidade para seleção (Botão Dropdown)

Para adicionar a opção de ação em massa no HTML, registre um callback bulk_actions-{screen-id} criando uma nova opção de seleção. Substitua o {screen_id} com o ID da área administrativa.

Vamos adicionar a funcionalidade no functions.php para ficar mais fácil o exemplo ( mais pode ser criado um arquivo para separar esta funcionalidade que é o aconselhável ),  “Email para apiki”:

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

function register_my_bulk_actions($bulk_actions) {
  $bulk_actions['email_to_apiki'] = __( 'Email to Apiki', 'email_to_apiki');
  return $bulk_actions;
}

Tratamento do envio do formulário

Registre o handle_bulk_actions-{screen_id} o filtro aguarda uma url para ser modificada que pode ser passada em $redirect_url. Permitirá exibir a notícia de sucesso ou falha ao executar a funcionalidade.

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_to_apiki' ) {
    return $redirect_to;
  }
  foreach ( $post_ids as $post_id ) {
    // Execute a ação para cada postatem
  }
  $redirect_to = add_query_arg( 'bulk_emailed_posts', count( $post_ids ), $redirect_to );
  return $redirect_to;
}

Exibindo Notícias

Podemos utilizar hooks para informar ao usuário sobre o que aconteceu. Dependendo do estado que definimos na 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( 'Emailed %s post to Apiki.',
    'Emailed %s posts to Apiki.',
    $emailed_count,
    'email_to_apiki'
    ) . '</div>', $emailed_count );
  }
}

Conclusão

Mais uma facilidade para agregar valor ao WordPress que poderá influenciar na facilidade do usuário no painel administrativo. Na versão anterior WordPress 4.6 já tinham sido implementadas muitas funcionalidades,  WordPress 4.7 adicionou mais funcionalidades que podem ser conferidas aqui.