Ações em massa personalizadas no WordPress 4.7

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.

custom-bulk-action-screenshot

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.

7 comentários sobre “Ações em massa personalizadas no WordPress 4.7

  1. André Páscoa disse:

    Então por exemplo. Futuramente teria como enviar a lista de todos os artigos em revisão para um determinado email de um usuário cadastrado no WP?

    Seria isso ? Ou tem mais funcionalidades…

    Curtir

    • Claudio Sanches disse:

      O exemplo é para enviar por e-mail, mas podia ser um exemplo para baixar todos os posts selecionados em formato PDF, publicar todos os posts selecionados no Twitter ou Facebook… Ou em outras palavras, qualquer coisa que você queria fazer.

      Curtido por 3 pessoas

    • leobaiano disse:

      André, a funcionalidade vai permitir que você faça algo com todos os itens selecionados. No seu exemplo você fala de enviar e-mail com a lista de posts em revisão, estar em revisão é diferente de ter sido selecionado pelo usuário, certo?

      Isso de enviar e-mail com a lista de posts que estão em revisão você pode fazer só adicionando um botão que chama uma função responsável por listar todos os posts em revisão e enviar para um e-mail, não precisa que o usuário selecione os posts.

      Curtido por 4 pessoas

    • leobaiano disse:

      – Enviar posts selecionados por e-mail
      – Exportar posts selecionados em PDF
      – Colocar em rascunho todos os posts das categorias selecionadas (isso na página de categorias no painel administrativo)
      – Mudar o grupo de todos os usuários selecionados (na página de usuários no painel administrativo)

      Man, vai ficar a critério da imaginação das pessoas e das necessidades de cada projeto.

      Curtido por 3 pessoas

Faça um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s