✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Obter endereços de usuários no WordPress, parte 2

17

No post anterior, comecei a compartilhar como baixar endereços de e-mail de usuários via JSON no WordPress (usando Ajax). O primeiro artigo abordou:

  1. registrando o JavaScript para fazer isso
  2. obter os endereços de e-mail dos usuários,
  3. e analisando os resultados.

Há mais a fazer, no entanto. Nomeadamente:

  1. convertendo as informações retornadas em JSON,
  2. gravando esse arquivo no disco,
  3. e como unir o resto usando JavaScript.

E é isso que o restante deste post vai abordar. Portanto, se você não leu o artigo anterior, recomendo-o se não houver outro motivo a não ser dar uma olhada no código para vê-lo até agora.

Endereços de e-mail do usuário via JSON, continuação

Além do fato de que existem outras maneiras de lidar com esse mesmo processo (algumas mais eficientes dependendo do número de usuários), observe que estou usando jQuery (em vez de JavaScript vanilla) para fazer isso. Algumas pessoas não são fãs de fazer isso, e isso é legal, mas não tenho exemplos neste post para isso.

Eu opto por esses exemplos porque o jQuery vem com o WordPress, muitos desenvolvedores do WordPress o usam, ele se encaixa nessa situação e eu [ainda] gosto. 🙂

Dito isso, continuarei de onde parei.

1 Converter uma matriz em JSON

Se você estiver familiarizado com PHP, então isso é algo fácil de fazer; mas se não, não é grande coisa. Primeiro, revise json_encode no manual do PHP. Observe que ele recebe uma matriz e a retornará como uma string formatada.

Isso é o que eu uso para converter a matriz de endereços de e-mail em uma string de JSON que eventualmente será gravada em disco. É uma linha de código.

json_encode($user_results);

Lembre-se, no entanto, que existe uma função que irá gerar os resultados do usuário conforme necessário. Especificamente, chamei a função getUserInfo e a compartilharei momentaneamente.

Porque como vamos enviar um arquivo para o usuário, as informações precisam ser gravadas em disco.

2 Gravar no disco

Neste ponto, é hora de gravar os resultados no disco. Dependendo das permissões do seu servidor, você poderá gravar o arquivo no disco diretamente no diretório do plugin; caso contrário, você pode ter que usar o  diretório de uploads.

Supondo que você esteja operando com o primeiro, veja como é a função completa :

<?php

private function writeAddressesToDisk($addresses)
{
    $path = plugin_dir_path(__FILE__). 'results.json';
    if (!file_exists($path)) {
        touch($path);
    }

    $handle = fopen($path, 'w');
    fwrite($handle, json_encode($addresses));
    fclose($handle);
}

Primeiro, ele verifica se o results.json existe. Caso contrário, ele criará um arquivo vazio. Depois disso, ele abre o arquivo para gravação, descarta o conteúdo da matriz no formato JSON no arquivo e fecha o recurso.

Agora, o arquivo está no disco, então é hora de enviá-lo para o usuário usando JavaScript.

3 Envie para o usuário

Primeiro, vamos revisitar a função JavaScript _getEmailAddresses  da postagem anterior. Você pode ver o trabalho feito até agora nesta essência.

Obter endereços de usuários no WordPress, parte 2

Observe que a primeira coisa a fazer é chamar uma função do lado do servidor que optei por chamar getEmailAddresses. Observe que ele executa a consulta, gera a matriz, grava o arquivo no disco e eco es o nome do arquivo para a função JavaScript (porque o WordPress requer um eco em vez de um retorno para chamadas Ajax):

<?php

public function getEmailAddresses()
{
    $this->writeAddressesToDisk(
        $this->getUserInfo(
            $this->getUserResults()) );

    echo plugin_dir_url(__FILE__). 'results.json';
    die;
}

Observe que são três chamadas de função, cada uma das quais recebe os resultados da outra como parâmetro e, em seguida, ecoa o plugin_dir_url com o nome do arquivo que optei por usar (claramente results.json ).

4 Enviando o arquivo via JavaScript

É aqui que fica um pouco mais complicado. O código precisa:

  1. certifique-se de que há uma resposta adequada,
  2. em caso afirmativo, ele criará dinamicamente uma âncora oculta
  3. acionar o evento de clique da âncora para simular um usuário clicando nela.

Faz sentido? Confira os resultados da função anônima abaixo:

var _getEmailAddresses = function($elem) {
    $.get(acme_email_export.ajax_url, {
        security:  acme_email_export.security,
        action:    'getEmailAddresses'
    }, function(response) {

        if ('' === response) {
            return;
        }

        // Creates the element to download the file.
        $('<a></a>')
            .attr('href', response)
            .attr('download', 'response.json')
            .attr('id', 'acme-download-emails')
            .text('Download')
            .attr('style', 'display:none')
            .appendTo($elem.parent());

        // Manually trigger clicking of the hidden element to download the file.
        $('#acme-download-emails')[0].click();
    });
};

Isso exibirá a  caixa de diálogo do arquivo de download para o usuário e permitirá que ele exiba o arquivo JSON criado por meio desta e da postagem anterior.

É isso?

Essencialmente, sim. Concedido, você pode ter que fazer ajustes em seu código para seu servidor web, mas a ideia geral permanece a mesma:

  1. execute a consulta,
  2. gerar uma matriz,
  3. converta para JSON,
  4. gravá-lo em disco,
  5. enviar o arquivo para o usuário

E sim, você pode optar por usar o WordPress Coding Standards (versus PSR2), vanilla JavaScript (versus jQuery) e assim por diante.

Independentemente disso, o procedimento permanece o mesmo e essa é uma maneira de fornecer uma maneira de baixar endereços de e-mail de usuários via JSON no WordPress.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação