5 métodos simples para crear consultas personalizadas en WordPress

En cada página de su sitio, WordPress ejecuta una consulta. Esto toma datos de la base de datos de su sitio y luego los muestra en la forma en que su tema le dice que use el bucle. Esta se llama la consulta principal. Dependiendo del tipo de página que se muestra, WordPress utilizará el archivo de plantilla más adecuado, lo que significa que el bucle puede variar para diferentes tipos de contenido. Pero siempre ejecutará una consulta para tomar datos de la base de datos. A veces es posible que desee cambiar la forma en que funciona la consulta. Por ejemplo, en la página principal del blog es posible querer excluir publicaciones de una determinada categoría o, en una página de archivo, puede enumerar las publicaciones por categoría, en lugar del orden de la fecha. También puede decidir que necesita agregar consultas adicionales en sus páginas, agregando publicaciones recientes o publicaciones relacionadas, por ejemplo. O es posible que desee crear un archivo de plantilla que reemplace la consulta principal con una totalmente personalizada.
La gran noticia es que WordPress lo hace posible. Hay algunas formas en que puede usar para cambiar la consulta principal o para crear una nueva. En esta publicación veré:
Escenarios en los que puede necesitar una consulta personalizada, enfocándose en las cuales requieren personalizar la consulta principal y que requiere una consulta completamente nueva y
Los cinco métodos para crear consultas personalizadas (incluida una que no debe usar y por qué).
Antes de comenzar: comprender los conceptos básicos si no ha creado consultas personalizadas antes, hay algunos términos que deberá comprender. Si ha trabajado con los archivos de plantilla de tema o con consultas, ¡puede omitir este bit! Una consulta es una rutina que se ejecuta WordPress para tomar datos de la base de datos de su sitio, incluirá publicaciones, archivos adjuntos, comentarios, páginas o cualquier contenido que haya agregado. a su sitio.
El bucle es el código de su base (o a veces un complemento) utilizado para especificar cómo se mostrarán los resultados de la consulta en la página. Entonces, por ejemplo, en la página principal del blog, el bucle podría incluir el título de cada publicación, un extracto, tal vez una imagen presentada y un enlace a la propia página (llamada Permalink).
Su tema utiliza archivos de plantilla para mostrar páginas para cada tipo de contenido. Diferentes temas tienen diferentes archivos de plantilla, pero deben incluir un archivo index.php principal y a menudo incluirán un archivo page.php para páginas estáticas, un archivo sencillo para publicaciones individuales y archive.php para páginas de archivo y tal vez una categoría archivo .php y un archivo tag.php para archivos y etiquetas de categoría, respectivamente. Hay varios archivos de plantilla que los temas pueden usar, por ejemplo, para reducir la taxonomía o los archivos de publicación; para obtener más detalles, consulte la jerarquía de plantillas.
Las etiquetas condicionales se pueden usar en archivos de plantilla o por complementos para verificar qué tipo de página se muestra actualmente. Por ejemplo, IS_PAGE () verifica si se muestra una página estática y verifica IS_HOME () si estamos en la página inicial. Hay varias etiquetas más condicionadas, incluidas algunas para determinar si el usuario está autenticado y no solo. Cuando necesita una consulta personalizada, hay dos tipos de interrogatorios personalizados:
La consulta principal como lo llama WordPress pero con los cambios que ha realizado y
Una interrogación completamente nueva para hacerse cargo de un contenido diferente o adicional.
Echemos un vistazo cuando pueda usar cada uno. Cambiar el interrogatorio principal Esto es algo que haría si desea que su página muestre los resultados del interrogatorio principal para ese tipo de contenido, pero desea hacer algunos ajustes. No desea mostrar contenido completamente diferente y no desea agregar un bucle adicional. Los ejemplos a este respecto podrían incluir:
En la página principal del blog, mostrando tipos de publicaciones personalizadas y publicaciones
En una página de archivo de categorías, solo se muestran publicaciones de un tipo de publicación
En una página de archivo de categorías, ordenando las publicaciones que se muestran alfabéticamente y no después de la fecha
Hay muchas más posibilidades, pero como puede ver, se trata de hacer cambios mínimos en lo que se interroga o como es.
Más tarde, en esta publicación, le mostraré cómo lograr todo lo anterior. Escribir una nueva consulta Si cambiar el interrogatorio principal no es suficiente, deberá crear una nueva consulta. Esto le brinda mucha más flexibilidad, pero no debe usarse cuando solo desea cambiar la consulta principal porque es menos efectiva. Crearía una nueva consulta si desea más de un bucle en una página o si desea anular la consulta principal con una completamente nueva. Los ejemplos de casos en los que es posible que necesite crear una nueva consulta son muchos y variados, pero incluyen: ejecutar dos bucles en una página de archivo: uno para la primera publicación y otra para todas las publicaciones posteriores. Haría esto si desea mostrar contenido diferente para la primera publicación, por ejemplo, si desea incluir un fragmento o imagen presentada para la primera publicación, pero no para las demás. Tenga en cuenta que si todo lo que desea hacer es atacar la primera publicación, es poco probable que necesite más bucles: en su lugar, debería poder usar el CSS que se dirige a la primera publicación.
En una sola página de publicación, ejecute un bucle adicional para mostrar otras publicaciones recientes (o publicaciones presentadas) bajo el contenido de la publicación, para alentar a los lectores a leer más.
Agregar un banner que se conecta a una sola publicación recomendada (o todas las publicaciones presentadas) en la parte superior de cada página, por ejemplo, si ha agregado una publicación que promueve un nuevo producto. Esto le brinda más flexibilidad que agregar un banner estático, ya que puede cambiar más fácilmente la publicación utilizada.
Creación de una lista de páginas en la misma sección del sitio, si su sitio tiene una estructura basada en páginas jerárquicas. Es posible que desee poner esto en la barra lateral. Aumentando una plantilla de página con una consulta totalmente personalizada para mostrar publicaciones después de la taxonomía o tipo de publicación (o tal vez ambos, en una cuadrícula).
En una página de archivo del tipo de publicación, listado por categoría o término de taxonomía, en lugar de después de la fecha (por ejemplo, creando columnas o enlaces a publicaciones recientes en cada categoría).
Crear un banner en su barra lateral para enviar a la última publicación y mostrarla.
Creación de una página para enumerar publicaciones con un término especificado en más de una taxonomía (por ejemplo, en un sitio de película, enumerando películas de SF en los Estados Unidos, cada género y país son una taxonomía).
Crear un tipo de publicación para el contenido de la barra lateral y consultar las publicaciones de ese tipo de publicación en la barra lateral. Esto ayudaría a aquellos que no tienen códigos para agregar contenido a la barra lateral con más flexibilidad de la que pueden obtener de los widgets.
Habrá muchos más escenarios que no he incluido aquí, pero eso te da una idea. No te mostraré cómo lograr cada uno de ellos en esta publicación, porque sería demasiado para cubrir, pero daré algunos ejemplos.
Los métodos para crear una consulta personalizada hay cinco métodos para crear consultas personalizadas y se pueden dividir de acuerdo con el hecho de que le ayuda a cambiar la consulta principal o crear una nueva. Los métodos para cambiar la consulta principal son:
Usando el gancho de acción pre_get_posts. Esto le permite realizar cambios en la consulta principal agregando una función al archivo de función o mediante un complemento (no en los archivos de plantilla). Puede combinarla con una declaración condicional para asegurarse de que se ejecute solo en las páginas que muestran ciertos contenidos. Usando Query_Posts (). Incluí esto aquí parcialmente para estar completo, pero es más importante para explicar por qué no debe usarlo. Query_posts () es una forma ineficiente y potencialmente incierta de cambiar la consulta principal. En lugar de cambiar la consulta principal, asumir la consulta principal, luego retírela y comience nuevamente, reanudando la consulta principal con sus cambios. Esto ralentizará su sitio, no es confiable y puede romperse, especialmente cuando se requiere la paginación. ¡Así que no lo uses!
Los tres métodos restantes les permiten crear una nueva consulta:
Clase WP_Query. Esta es la forma más fuerte y flexible de crear una nueva consulta y la usará al crear un segundo bucle en un archivo de plantilla o cuando crea una plantilla con una consulta totalmente personalizada que reemplaza el bucle principal. Debe tener cuidado al usarlo: el riesgo principal es si no restablece la consulta después de ejecutar el bucle, lo que significa que WordPress no podrá identificar correctamente qué tipo de página se muestra. Pero puedes evitar esto fácilmente.
get_posts () plantilla get_posts (). Usará esto en un archivo de plantilla (incluida la barra lateral o el sótano, por ejemplo) para hacerse cargo de una lista de publicaciones. Use la clase WP_Query para hacer esto, por lo que en realidad es una forma más simple de usarlo si todo lo que necesita son publicaciones. Puede usar los parámetros con él para especificar qué publicaciones desea.get_pages () get_pages (). Esto funciona de la misma manera que las páginas get_posts (), get_posts () en lugar de publicaciones.
Así que ahora sabes cuáles son los cinco métodos para echar un vistazo a cada uno de los recomendados.
La acción pre_get_posts pre_get_posts Como es de esperar, WordPress realiza esta acción inmediatamente antes de hacerse cargo de las publicaciones en la base de datos, de modo que cualquier función que adjunte afecte cómo WordPress hace esto. Para usar pre_get_posts, cree una función y luego conecte a la acción, como sigue:
Las principales Raewrites/3DD9E8ED2F94F0E157F3 se cargan
Echemos un vistazo a lo que esto hace:
En primer lugar, crea una función llamada my_function. Lo que hace la función está contenida en aparatos ortopédicos.
Luego adjunte esa función al gancho pre_get_posts usando add_action (). Sin esto, su función no funcionará.
Además, casi siempre necesita incluir una etiqueta condicional. Sin esto, WordPress ejecutará su función cada vez que tome publicaciones, incluso cuando trabaje en sus publicaciones en el administrador. Entonces su función se verá así:
Se cargó el principal rawrits/1605b4948fc1ef7dc68, verificamos que no estamos en las pantallas de administración y también que el interrogatorio es la consulta principal. Es importante verificar que WordPress esté ejecutando la consulta principal, ya que podría causar problemas si ejecuta la función para consultas adicionales que ha creado. Puede agregar etiquetas acondicionadas adicionales aquí, como veremos. Detaltemos esto un poco con algunos ejemplos.
Incluyendo tipos de publicaciones personalizadas en la página de su blog principal de forma predeterminada, WordPress solo muestra las publicaciones en la página de inicio. Si crea un tipo personalizado de publicación, se supone que los muestra en otro lugar y no los incluya aquí. Pero a veces es posible que desee mostrar más de un tipo de publicación en la página principal, en cuyo caso usa el gancho pre_get_posts. Para hacer esto, agregue lo siguiente al archivo Functions.php del tema o en un complemento que cree:
Raewrites de carga/816F6C4B1A068A3D61DF
Esto verifica dos cosas: esta es la consulta principal y es la página inicial (usando is_home ()). Luego establezca la consulta para incluir dos tipos de publicación: ‘Post’ y ‘Custom_Post_Type’, siendo el tipo de publicación personalizada. Tenga en cuenta que debe incluir ‘publicar’ aquí si aún desea que la página de inicio muestre publicaciones, así como su publicación personalizada. Si acaba de agregar ‘custom_post_type’ aquí, reemplazaría las publicaciones predeterminadas y únicas con su publicación personalizada. A veces es posible que quieras hacer esto, pero este no es uno de esos momentos. Puede leer sobre esta técnica más detallada en esta publicación. Muestre las publicaciones de un tipo de publicación personalizada en una página de archivo de categoría Este ejemplo supone que cuando ha registrado el tipo de publicación personalizada, ofreció soporte para categorías y que ha asignado las categorías de su costumbre. Para modificar los archivos de categoría para mostrar publicaciones con la publicación personalizada, use lo siguiente: Cargue las principales Raewrites/A90B6D0C6F79ABCE6940
Verifica si la consulta principal se está ejecutando y estamos en un archivo de categorías usando IS_Category (). Luego cambie la consulta para tomar publicaciones con el tipo de publicación personalizado. Tenga en cuenta que debido a que no incluí ‘publicar’ aquí, las publicaciones habituales no se mostrarán en ningún archivo de categoría y que no debería usar una matriz, porque específicamente es un tipo de publicación. Si desea ser más preciso al usar este método, puede verificar una determinada categoría:
Las principales RaewRites/EC28540CA04D4D21111111111111111111111111111111111111: la consulta principal solo en la página de archivo ‘Cate-Slug’, donde ‘Lug de categoría’ es la babosa para su categoría. Los datos están interrogados, pero por la forma en que están fuera. Suponga que en sus páginas de archivo de categorías no desea mostrar las publicaciones después de la fecha, sino en orden alfabético. Puede hacer esto usando pre_get_posts de la siguiente manera:

Cargue los rawrits principales/309A3DA6B3427387BC1E
Utiliza dos parámetros de consulta: orden y orden, para modificar ambas publicaciones después de que se clasifican y el orden en que se muestran. Para obtener más parámetros que puede usar con pre_get_posts, consulte la página de WordPress Codex para WP_Query, que utiliza los mismos parámetros. La clase WP_Query WP_Query es el método más fuerte disponible para escribir una consulta personalizada. Úselo cuando desee reemplazar la consulta principal con una nueva o cuando desee agregar una nueva consulta además de la consulta principal. WP_QUEY tiene piezas:
Los argumentos para la consulta, utilizando parámetros similares con los que podría usar para pre_get_posts
Consulta misma
Círculo
Limpieza: cierre de las etiquetas y el reinicio de las etiquetas y la publicación.
Se verá así:
Cargue los rawrits principales/5CFC443290A213A93CDE
Como puede ver, esto es más complicado que el uso de pre_get_posts, que es una de las razones por las que debe evitar usarlo si desea cambiar la consulta principal. Pero la razón principal de esto es que esto funcionaría más WordPress y ralentizaría su sitio. Echemos un vistazo a un ejemplo. Supongamos que quiero agregar un segundo bucle después del contenido de publicación en mi archivo de plantilla single.php, para mostrar una lista de publicaciones recomendada. Definí esas publicaciones recomendadas usando una categoría “representada”. Para cada una de estas publicaciones quiero mostrar la imagen y el título presentados, con enlaces a la publicación. Así es como lo hago: las Raewrites esenciales/F517D958C25EBB77688888888888888888888888888888888
Esto utiliza tres argumentos para interrogar los datos:
‘post_type’ => ‘publicar’ solo tomar publicaciones
‘Post_per_page’ => ‘4’ Tome solo cuatro publicaciones
‘Post__not_in’ => array ($ post-> id) asegura que la publicación actualmente no esté incluida.
Luego elimine las cuatro publicaciones en un bucle que muestra la imagen presentada y el título, cada uno dentro de un enlace a la página de publicación. Luego puede usar CSS para elegir, colocándolos uno al lado del otro o en una cuadrícula y superponiendo el título a través de la imagen. Etiqueta de plantilla get_posts (). Si no necesita tanta flexibilidad de WP_QUEY, puede descubrir que get_posts () haga lo que necesita. De hecho, podría haberlo usado para el ejemplo anterior. Get_posts () es una plantilla que accede a la clase WP_QUEY y puede usarla de manera similar a WP_QUEY. Entonces, para crear esa lista de cuatro publicaciones recientes que creamos anteriormente con WP_Query, usaría get_posts () de la siguiente manera: Load Raewrites/9752E257CE33D2F210EC
Aquellos con ojos de águila entre ustedes notarán que esto es muy similar al código que utilicé con WP_Query anterior. Sin embargo, si es realmente cuidadoso, notará algunas diferencias:
Los argumentos no deben incluir el tipo de publicación
Utilizo una variable $ publicaciones para almacenar el resultado de la matriz de get_posts ()
En lugar de verificar si la consulta tiene publicaciones, uso si ($ publicaciones) para verificar si tiene algo
En lugar de un bucle estándar, uso foreach ($ publicaciones como $ post), que circula a través de cada fila en la matriz
Para acceder a todos los datos de publicación que quiero, incluya configurar_postat ($ post).
Debido a que get_posts () usa wp_quey, en realidad no hay mucha diferencia entre los dos, por lo que tiendo a usar wp_query, porque me da más flexibilidad (y porque estoy acostumbrado a usarlo con publicaciones personalizadas). Sin embargo, donde encuentro get_posts () lo más útil es si simplemente quiero verificar si hay publicaciones con mis argumentos. Luego puedo eliminar el código de acuerdo con si hay publicaciones actuales, que no deberían ser un bucle. Get_pages plantlate etiqueta (). Get_pages () es muy similar a get_posts (): usa wp_query pero toma páginas estáticas en lugar de publicaciones. Veamos un ejemplo en el que podría usarlo. Supongamos que su sitio tiene un conjunto de páginas de nivel superior que son las más importantes y desea agregar una lista en la barra lateral para que pueda atacar sus enlaces y alentar a los visitantes a acceder a esas páginas. En el archivo de plantilla SideBar.php, agregaría este código: Cargue las principales RaewRites/15CF3EFC9B219CE0889D
Echemos un vistazo a esto:
Primero defino mis argumentos: ‘padre’ => 0 toma las páginas sin un padre, mientras que los otros dos argumentos definen cómo se ordenan las páginas.
Luego uso get_pages () para poblar una matriz almacenada como $ páginas
Compruebo si $ Pages tiene datos usando if ($ páginas)
Si es así, abro una lista, entonces para cada página abro un elemento de la lista
En lugar de usar setup_postdata () como lo hice con get_pages (), me refiero a $ post con diferentes etiquetas de plantilla que eliminarán el enlace y el título. Tengo que usarlos porque no usé setup_postdata ().
Debido a que no he usado setup_postdata (), no tengo que usar wp_reset_postdata (). El código anterior es una forma más efectiva de mostrar una lista de páginas que si usara wp_query. Conclusión La posibilidad de cambiar la consulta principal o escribir sus propias consultas es una capacidad muy útil para desarrollarse si tiene la intención de crear temas o complementos personalizados o desarrollar sitios complejos, según los datos del cliente. Utilizo una forma de consulta personalizada u otra en casi todos los sitios que construyo y, desde mi punto de vista, es una de las cosas más interesantes de WordPress (¡pero puede tener su propio favorito!) Como demostramos aquí, hay Cinco formas en que puede crear consultas personalizadas, aunque solo se deben usar cuatro de ellas. Estos son:
pre_get_posts para cambiar el interrogatorio principal
WP_Query para crear una consulta personalizada compleja
get_posts () y get_pages () para consultas personalizadas más simples que get_pages () solo publicaciones o páginas.
Una combinación de ellos lo ayudará a crear sitios avanzados de WordPress y mostrar datos de todos modos. ¿Usas consultas personalizadas? ¿Cuáles son sus principales consejos para crear consultas personalizadas? Háganos saber en los comentarios a continuación. Etiquetas:
desarrolladores

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 *