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

Consultas diretas ao banco de dados no WordPress

15

Se você voltou a qualquer uma das postagens que escrevi nos últimos, digamos, dois anos, é provável que você me encontre defendendo o uso de APIs disponíveis em consultas de banco de dados de diretório quase todas as vezes.

E a verdade é que ainda me inclino nessa direção. Ou seja, se houver uma abstração ou uma API disponível para fazer algo específico, tento usá-la.

Mas em alguns projetos recentes, tenho trabalhado com alguns conjuntos de dados relativamente grandes (grandes em comparação com conjuntos de dados de nível não empresarial). E, ao fazer isso, tentei garantir que as atualizações dos dados fossem o mais rápido possível.

Em situações como essa, embora os Padrões de Codificação do WordPress não gostem, acho que consultas diretas ao banco de dados ocasionalmente são a melhor opção para fazê-lo sob certas condições.

Usando consultas diretas ao banco de dados

As consultas diretas ao banco de dados são uma daquelas coisas que têm uma reputação um pouco mista entre os desenvolvedores do WordPress:

  • eles são desencorajados nos padrões de codificação,
  • WordPress oferece acesso direto ao banco de dados via $wpdb,
  • existem nuances nas consultas de banco de dados que devem ser compreendidas.

Então, quando você vê algo assim :

<?php

private function set_all_scheduled_events_as_public() {

    global $wpdb;

    // @codingStandardsIgnoreStart
    $wpdb->query(
        $wpdb->prepare(
            "
            UPDATE $wpdb->posts
            SET post_status = '%s'
            WHERE post_type = '%s'
            AND post_status = '%s'
            ",
            'publish',
            'tribe_events',
            'future') );
    // @codingStandardsIgnoreEnd
}

Como saber se é uma boa jogada ou não? E melhor ainda, como você sabe se deve usar consultas de banco de dados de diretório em seu próprio código?

Existem algumas perguntas que normalmente me faço ao lidar com elas, todas compartilhadas abaixo.

1 Existem índices nas colunas?

Antes de fazer o uso de consultas diretas ao banco de dados no WordPress é verificar se as colunas que estou consultando possuem índices nas referidas colunas.

E o motivo é este :

Índices são usados ​​para localizar dados rapidamente sem ter que pesquisar cada linha em uma tabela de banco de dados toda vez que uma tabela de banco de dados é acessada.

A conclusão é que a velocidade com que você pode consultar e atualizar colunas é mais rápida se houver índices nas colunas.

Consultas diretas ao banco de dados no WordPress

As consultas diretas ao banco de dados dependem da estrutura do banco de dados.

Para esse fim, isso não é algo que devemos fazer o tempo todo. Mas há momentos em que é apropriado (como quando você está atualizando um conjunto de valores meta) e quando não é.

2 Parametrize suas consultas

Ao usar consultas diretas ao banco de dados, é extremamente importante parametrizar suas consultas por questão de segurança. Você pode ler tudo sobre isso no Codex, e isso não é algo a ser ignorado.

Direto da documentação :

Para uma visão mais completa do escape de SQL no WordPress, consulte Validação de dados do banco de dados. É uma leitura obrigatória para todos os contribuidores de código do WordPress e autores de plugins.

Ou seja, se você estiver recebendo a entrada do usuário, precisará garantir que ela esteja limpa, limpa e pronta para ser inserida no banco de dados. Mas, vale a pena, quase nunca permito que a entrada do usuário afete as consultas diretas ao banco de dados.

Em vez disso, eles são normalmente baseados em dados que tenho no código e quero atualizar ou modificar quando estiverem seguros dentro do domínio de controle da base de código.

3 Teste-os e teste-os novamente

E, finalmente, antes de implementar qualquer consulta direta, recomendo:

  1. Iniciando seu front-end SQL e executando as consultas,
  2. Observe quaisquer erros que eles possam lançar,
  3. Corrija-os e tente novamente.

Então, uma vez que você tenha um teste de consulta funcional para casos extremos, para garantir que algo não seja mutilado. Isso é especialmente verdadeiro se você estiver usando cláusulas LIKE em suas consultas (o que provavelmente é um artigo em si).

Estou perdendo uma API?

Com o tamanho da API do WordPress, sempre há uma chance de estar faltando alguma coisa, negligenciando algo ou simplesmente não estar sendo inteligente sobre as APIs existentes.

E se for esse o caso, ficarei feliz em corrigir as informações acima (então não hesite em deixar um comentário).

Mas, enquanto isso, se você está trabalhando com um conjunto de dados relativamente definido, tem certeza de que há índices nas colunas, sabe como parametrizar as consultas e testou os dados, talvez fazendo com consultas de banco de dados são o caminho a percorrer.

E se for esse o caso, existem algumas maneiras de ignorar os padrões de codificação sem que o PHP CodeSniffer grite com você. 🙂

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