✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Consultas directas a la base de datos en WordPress

66

Si repasó alguna de las publicaciones que escribí en los últimos, digamos, dos años, es probable que me encuentre defendiendo el uso de las API disponibles en lugar de las consultas de la base de datos del directorio casi todas las veces.

Y la verdad es que todavía me inclino en esa dirección. Es decir, si hay una abstracción o una API que está disponible para hacer algo específico, entonces trato de usarla.

Pero en un par de proyectos recientes, he estado trabajando con algunos conjuntos de datos relativamente grandes (grandes en comparación con conjuntos de datos de nivel no empresarial). Y al hacerlo, he tratado de asegurarme de que las actualizaciones de los datos sean lo más rápidas posible.

En situaciones como esta, aunque a los Estándares de codificación de WordPress no les gusta, encuentro que las consultas directas a la base de datos ocasionalmente son la mejor opción para hacerlo bajo ciertas condiciones.

Uso de consultas directas a la base de datos

Las consultas directas a la base de datos son una de esas cosas que tienen una reputación mixta entre los desarrolladores de WordPress:

  • se desaconsejan en los estándares de codificación,
  • WordPress ofrece acceso directo a la base de datos a través de $wpdb,
  • Hay matices en las consultas de la base de datos que deben entenderse.

Así que cuando veas algo como esto :

<?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
}

¿Cómo saber si es un buen movimiento o no? Y mejor aún, ¿cómo sabe si debe usar consultas de bases de datos de directorio en su propio código?

Hay algunas preguntas que normalmente me hago cuando trato con ellas, todas las cuales se comparten a continuación.

1 ¿Hay índices en las columnas?

Antes de usar consultas directas a la base de datos en WordPress es verificar si las columnas que estoy consultando tienen índices en dichas columnas.

Y el motivo es este :

Los índices se utilizan para localizar datos rápidamente sin tener que buscar en cada fila de una tabla de base de datos cada vez que se accede a una tabla de base de datos.

La conclusión es que la velocidad a la que puede consultar y actualizar columnas es más rápida si hay índices en las columnas.

Consultas directas a la base de datos en WordPress

Las consultas directas a la base de datos dependen de la estructura de la base de datos.

Con ese fin, esto no es algo que debamos hacer todo el tiempo. Pero hay momentos en los que es apropiado (como cuando está actualizando un conjunto de valores meta) y cuando no lo es.

2 Parametriza tus consultas

Cuando se utilizan consultas directas a la base de datos, es extremadamente importante parametrizar sus consultas por motivos de seguridad. Puede leer todo sobre esto en el Codex, y esto no es algo que se deba omitir.

Directamente de la documentación :

Para obtener una descripción más completa del escape de SQL en WordPress, consulte Validación de datos de la base de datos. Es una lectura obligada para todos los contribuyentes de código de WordPress y autores de complementos.

Es decir, si está tomando la entrada del usuario, debe asegurarse de que esté desinfectada, limpia y lista para insertarse en la base de datos. Pero, por lo que vale, casi nunca permito que la entrada del usuario afecte las consultas directas de la base de datos.

En su lugar, normalmente se basan en datos que tengo en el código y quiero actualizar o modificar cuando están seguros dentro del ámbito de control de la base de código.

3 Pruébelos y vuelva a probarlos

Y por último, antes de implementar cualquier consulta directa, recomiendo:

  1. Iniciando su front-end SQL y ejecutando las consultas,
  2. Tenga en cuenta cualquier error que puedan arrojar,
  3. Corrígelos y vuelve a intentarlos.

Luego, una vez que tenga una consulta de trabajo, pruebe los casos extremos para asegurarse de que algo no se va a alterar. Esto es especialmente cierto si va a utilizar cláusulas LIKE en sus consultas (lo que probablemente sea un artículo en sí mismo).

¿Me estoy perdiendo una API?

Con el tamaño de la API de WordPress, siempre existe la posibilidad de que me esté perdiendo algo, esté descuidando algo o simplemente no esté siendo inteligente con las API existentes.

Y si ese es el caso, con gusto corregiré la información anterior (así que no dude en dejar un comentario).

Pero mientras tanto, si está trabajando con una parte de datos relativamente establecida, está seguro de que hay índices en las columnas, sabe cómo parametrizar las consultas y ha probado los datos, entonces tal vez haciendo con directo consultas de base de datos son el camino a seguir.

Y si ese es el caso, hay algunas formas de ignorar los estándares de codificación sin que PHP CodeSniffer le grite. 🙂

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More