Cómo mejorar su sitio web de WordPress usando WP_Query

La publicación del blog invitado de hoy fue escrita por Isaac Castillo.Isaac es el fundador de Solución de diseño eco, WordPress basado en San Antonio WooCommerce Empresa de desarrollo.


Los desarrolladores de WordPress buscan constantemente formas de mejorar la funcionalidad y el rendimiento de los sitios de sus clientes.Para apoyar este esfuerzo, WordPress incluye: Rica biblioteca de funciones Se puede utilizar para agregar funcionalidad a su sitio.Por ejemplo, si desea obtener el título de una publicación de blog lazoSi su código PHP es procesado por WordPress y se muestra en la página actual, puede usar la función the_title (). De manera similar, puede usar la función the_content () para obtener el contenido de una publicación de blog y la función get_categories () para obtener la categoría de la publicación.

WordPress tiene casi todo lo que desea hacer en su sitio, pero es inevitable que deba realizar tareas que las funciones integradas de WordPress no pueden manejar. Por ejemplo, considere cómo consultar los siguientes datos: Campos personalizados avanzados Cree un complemento y devuelva esos datos para su publicación. Para ejecutar la consulta en este ejemplo, debemos buscar fuera de las funciones integradas de WordPress. WordPress contiene clases que le permiten recuperar información de la base de datos de WordPress dentro de un bucle mediante consultas personalizadas con parámetros personalizados. Esta clase se llama WP_Query y debe familiarizarse con esta valiosa herramienta para los desarrolladores a medida que avanza en WordPress.


Mi equipo y yo recientemente completamos una migración de cliente de Python a WordPress. Este proyecto requirió tantas personalizaciones y tipos de publicaciones personalizadas que buscamos fuera de las funciones integradas de WordPress para orientar con precisión la información que necesitábamos. En este caso, el cliente solo necesitaba ver el evento actual en el sitio. Es decir, tuve que mirar la fecha en que ocurrió el evento.

Cómo usar wp_query en WordPress
La interfaz del sitio permite a los visitantes ver una lista de eventos por fecha.

WordPress incluye una función get_the_date (); que devuelve la fecha en que se creó o ingresó el evento. Esta característica se limita a la fecha de creación del evento y no es suficiente para nuestro proyecto. Usé Campos personalizados avanzados para crear campos personalizados que me permiten rastrear la fecha en que ocurrió un evento en particular. Pude usar WP_Query para crear una consulta personalizada que extrae eventos basados ​​en un campo de evento personalizado. Como resultado, los visitantes del sitio pudieron ver una lista de eventos actuales o futuros.

El principio básico de usar WP_Query es obtener información de la base de datos de una manera que se pueda reproducir como si se obtuviera usando las funciones integradas de WordPress. Un beneficio adicional de crear consultas personalizadas con WP_Query es que puede configurar funciones auxiliares para ampliar en gran medida la funcionalidad de WordPress. Para tener una idea de cómo funciona WP_Quuery, he compartido una consulta de muestra a continuación basada en el reciente proyecto de migración de Python a WordPress de mi equipo.

$args = array( 
    'orderby'        => 'date',
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
);

$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();
        the_content();
    }
    wp_reset_postdata();
} else {
    echo '

Lo siento, no hay publicaciones para mostrar

‘;}

Puede encontrar que la consulta en este ejemplo se parece mucho a una consulta post-ciclo normal. La principal diferencia está en la matriz $ args. Esto le permite especificar la información que la consulta recupera de la base de datos. Dentro de $ args, puede pasar cualquier tipo de criterio que cambiará el resultado del ciclo.

Después de configurar la consulta y el ciclo, debe ingresar los argumentos correctos en la matriz $ args. Por ejemplo, si desea obtener el tipo de publicación personalizada para el evento descrito en mi ejemplo, puede usar el siguiente argumento:

$args = array( 
    'orderby'        => 'date',
    'post_type'      => 'events',
    'post_status'    => 'publish',
    'posts_per_page' => -1,
);

$the_query = new WP_Query( $args );

Estoy usando este código para consultar la base de datos para un tipo de publicación llamado eventos (un tipo de publicación personalizada que creé) y decirle a WordPress que solo recupere eventos con estado publicado. Puede utilizar la variable posts_per_page para especificar el número de registros devueltos. Si se deja en -1, se devolverán todos los registros aplicables.

En este punto, obtuve el tipo de publicación para el evento, pero aún no está terminado. Debe procesar sus datos para que solo se muestren los eventos con fechas actuales o futuras y se ignoren los eventos con fechas pasadas. Esta funcionalidad se puede lograr mediante las siguientes consultas optimizadas:

$time = current_time( 'timestamp' ); // Get current Unix timestamp

$args = array( 
'post_type' => ‘events',
'post_status' => 'publish',
'posts_per_page' => -1,
'meta_key' => 'start_date',
'meta_value' => $time,
'meta_compare' => '>=',
'orderby' => 'meta_value',
'order' => 'ASC'
);

$the_query new WP_Query( $args );

Como antes, la consulta obtiene los tipos de publicaciones de los eventos publicados y los devuelve todos. Consultar el valor de un campo personalizado avanzado funciona de maravilla para que pueda cambiar el resultado. En este ejemplo, se utilizan los siguientes argumentos para lograr esta funcionalidad:

$ tiempo
Al principio del script, asociamos la hora en que se cargó el script como una marca de tiempo de Unix con una variable llamada $ time.

fecha de inicio
Target’meta_key ‘=>’ fecha_inicio ‘. El campo start_date establecido en Campos personalizados avanzados está asociado con el tipo de publicación personalizada meta_key. Este campo es obligatorio para poder consultar datos de Campos personalizados avanzados.

meta_valor
Estamos buscando un evento con start_dates igual a la variable $ time que pasamos. Pero este no es el resultado que queremos. Estoy más interesado en algo más que un evento para el tiempo de hoy. Publique no solo los eventos de hoy, sino también los eventos futuros. ¿Qué hacemos en este caso?

meta_compare
La solución está en meta_compare. Puede usar esto para especificar que desea compararlo con algo cuando busque el valor de meta_key. Aquí está> =. Esto significa que está buscando eventos que sean mayores o iguales al valor que estableció para meta_value. WP_Query es excelente aquí porque le permite agregar características que de otra manera serían difíciles de implementar.

orden
Finalmente, puede ver que también puede ordenar el meta_valor en orden ascendente. Esto organiza los eventos en orden cronológico.

El reciente proyecto de migración de Python a WordPress de mi equipo me ha brindado la oportunidad de aprovechar las potentes funciones de WP_Query. Con las funciones integradas de WordPress, asegúrese de utilizar consultas personalizadas con WP_Query si se encuentra en una situación en la que no puede obtener los datos que necesita en el formato que necesita. Tenga en cuenta que las buenas consultas conllevan una gran responsabilidad. No olvide restablecer los datos de su publicación cuando haya terminado.