Usos prácticos de pre_get_posts

En WordPress, pre_get_posts es una acción que permite cambiar un wp_quey existente, antes de que se realice esa consulta. Pre_get_posts ofrece algunas soluciones que son más eficientes que escribir un wp_quey personalizado y permite soluciones a otros problemas que serían bastante difíciles. ¡Aprendamos sobre pre_get_posts! ¿Qué es un wp_query casi todas las páginas en un sitio de WordPress se crean mediante bucle mediante la publicación de paquetes, que se toman con WP_QUEY? En la programación, para interrogar una base de datos en general lograr resultados específicos de esa base de datos. Por ejemplo, en una base de datos llena de personas sobre personas, es posible que desee el nombre y la edad de una persona en particular y escribir una consulta (en SQL o en un idioma similar) para obtener la información deseada.
Un wp_quey es un tipo especial de consulta, único para WordPress, que toma publicaciones de la base de datos de WordPress. Las publicaciones de WordPress son los bloques de contenido que componen los artículos, páginas, accesorios de medios y muchos otros de un sitio. A medida que tratamos en nuestra introducción a WP_Query, casi todas las páginas en un sitio de WordPress se crean pasando a un bucle a través de uno o más paquetes de publicación. Estos paquetes de publicación son tomados por el wp_quey predeterminado que WordPress ejecuta para ese tipo de página y también puede ser tomado por uno o más WP_Query personalizados que escribimos nosotros mismos.
pre_get_posts brevemente pre_get_posts es una acción que le permite cambiar una wp_query que está a punto de ejecutarse. Pre_get_posts es una acción que le permite cambiar una wp_query que está “a punto de ejecutarse”, es decir, “pedirle a la base de datos un paquete de publicaciones”. Antes de que la consulta pueda ejecutarse en la base de datos y obtener su paquete de publicación, interveniremos y cambiaremos las publicaciones que la consulta realmente solicitará. Este orden de eventos es cómo pre_get_posts recibe su nombre. Por ejemplo, el siguiente ejemplo pre_get_posts hará que su página de índice de blog, que normalmente enumere sus últimas publicaciones, para mostrar, por otro lado, las últimas publicaciones de la página: add_action (‘pre_get_posts’, ‘wpshout_pages_blogindex’); function wpshout_pages_blogindex ($ query) {if (is_home () && $ query-> is_main_query ()): $ query-> set (‘post_type’, ‘página’); Terminara si; } Pegar este código en funciones.php del tema en vivo conduce a un índice de blog (bastante extraño) con solo páginas y sin publicaciones. En la página del blog de nuestra agencia Press Up, se muestra de la siguiente manera:
Por lo tanto, pre_get_posts nos permite cambiar la consulta implícita existente del índice del blog, sin tener que escribir un nuevo wp_quey. Eso significa pre_get_posts brevemente.

Al usar pre_get_posts, recuerde, pre_get_posts le permite cambiar una consulta existente. Por lo tanto, pre_get_posts es útil cuando es mejor no escribir una nueva consulta, pero cambiar una que ya existe. Aquí hay algunos ejemplos: algunos WP_Query personalizados son los más fáciles de cambiar con pre_get_posts, a veces necesita cambiar una wp_quers personalizada que no ha escrito. Esto probablemente significa una consulta de un complemento externo o en algún lugar del núcleo de WordPress. Por ejemplo, el widget de “publicaciones recientes” es parte del núcleo de WordPress. Supongamos que usamos “publicaciones recientes” en nuestro sitio y que acabamos de crear una página llamada “Recaudación de fondos”. En nuestra página de recaudación de fondos y solo en esa página, queremos que las “publicaciones recientes” del widget muestren solo las publicaciones recientes que están etiquetadas con “recaudación de fondos”. Podríamos instalar un mejor widget de “publicaciones” que permitan esto para permitir este trabajo y luego Haga un área de widget personalizada exclusivamente para la página “Fondo de recaudación”, pero que crea bastante trastorno. En cambio, solo cambiemos el WP_Query condicionado personalizado que usa “publicaciones recientes”. Este proceso tiene tres etapas:
Asegúrese de estar en la página de “recaudación de fondos”,
Asegúrese de hablar con la consulta personalizada generada por “publicaciones recientes” (la parte más difícil) y
Cambie esa consulta de acuerdo con nuestro placer.
Aquí está el código:
add_action (‘pre_get_posts’, ‘wpshout_fundraiser_recent_posts’);Function wpshout_fundraiser_recent_posts ($ query) {// Noothing si no en la página de recaudación de fondos if (! Is_page (‘Foundraiser)): return;Terminara si;// Haz peso estamos hablando con el wp_query // generado por el widget de publicaciones reciente (! is_main_query () && $ query-> query [no_found_rows] === true && $ query-> query [‘post_type’] == = Null): // Retir solo publicaciones etiquetadas con “Fundraiser” $ TaxQury = Array (‘Taxonomy’ => post_tag ‘,’ Field ‘=>’ Slug ‘,’ Termin ‘=> Array (‘ FundAiser ‘),)))) ;$ QUERY-> SET (‘Tax_Query’, $ TaxQuery);Terminara si;} Un ejemplo ligeramente complicado, pero probablemente más rápido y más limpio que las alternativas si este fuera un proyecto real.
Cambiar los interrogatorios predeterminados de WordPress La mayoría de las veces, usará pre_get_posts para la consulta implícita de WordPress, ya que generalmente puede cambiar otras consultas directamente. Los interrogatorios predeterminados de WordPress son extremadamente importantes: son las consultas que toman las últimas publicaciones para el índice de su blog, todas las publicaciones en una determinada categoría para una página de archivo de categoría, todas las publicaciones en un mes determinado para una página de archivo en la luna, resultados de búsqueda para una búsqueda página y así sucesivamente. En la sección anterior, estiré mi cerebro para encontrar un caso en el que usó pre_get_posts para cambiar una WP_Query personalizada. Sin embargo, con mayor frecuencia usará pre_get_posts para interrogatorios predeterminados de WordPress, ya que generalmente puede cambiar otras consultas directamente. (Casi todos los ejemplos de la documentación de Codex para pre_get_posts cambian la consulta predeterminada de una página).

Pre_get_posts es la mejor manera de cambiar una consulta predeterminada. Aquí hay un ejemplo importante en el artículo de la semana pasada sobre los tipos de publicaciones personalizadas, que hicieron que una publicación personalizada recién registrada, los cursos, aparezcan en las páginas de archivo del sitio, que no sucederían de forma predeterminada: // Hacer que las publicaciones de cursos aparezcan en Archive Pages add_action (‘pre_get_posts’, ‘wpshout_add_custom_post_types_to_query’); function wpshout_add_custom_post_types_to_query ($ query) {if (is_archive () && vacía ($ query-> query_vars [‘supress_filters])) {$ query-> set (‘ post_type ‘, array (‘ post ‘,’ curso ‘)); }} P Este código primero nos pregunta si estamos en una página de archivo. Si lo somos, cambie la consulta de página predeterminada para introducir no solo publicaciones, sino también cursos. Alternativa a este enfoque: modifique cualquier plantilla que use la consulta predeterminada que desea cambiar (index.php, search.php, etc.), elimine Procesamiento de interrogatorio de plantilla predeterminada y luego escriba su propia WP_Query personalizada desde cero, es frágil. Y demasiado trabajo. Por ejemplo, no tendría idea de cómo escribir una sola WP_Query personalizada para cubrir todos los diferentes tipos de consulta que se generan para páginas de archivo. Consulte Codex para obtener muchos otros ejemplos de sentido común que se refieran a ocultar una determinada publicación de los resultados de búsqueda, cambiando las categorías que atrae el índice de blog, etc.
Pre_get_posts es más eficiente que escribir un nuevo wp_query use pre_get_posts en lugar de nuevo wp_query () cuando sea posible, ya que esto minimiza los interrogatorios en la base de datos de WordPress. En algunas situaciones, puede usar pre_get_posts o un nuevo wp_query personalizado para hacer lo que desea. En estas situaciones, es más rápido y mejor usar pre_get_posts, porque solo hace un viaje, y no dos, en la base de datos de WordPress. Recuerde, cada WP_QUEY es una consulta nueva y compleja que se enviará a la base de datos de WordPress. Un interrogatorio de la base de datos modificada procesará mucho más rápido que dos consultas completamente separadas. Ahora puede pre_get_posts trabajar con pre_get_posts es una herramienta muy útil que puede tener en su bolsillo si tiene alguna consulta que no puede cambiar. También es una excelente manera de evitar que la escritura WP_Query sea inútil cuando sea más fácil y más eficiente cambiar la consulta existente. Esto es especialmente cierto cuando tiene que hacer cambios en los interrogatorios predeterminados de WordPress, para páginas como el índice de blog, el archivo y las páginas de búsqueda; Allí se vuelve indispensable pre_get_posts. ¡Gracias por leer! Imagen de crédito: John Nakamura Remy

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *