Felipe Elia consejos para

es un CMS y, por lo tanto, la manipulación del contenido es uno de los principales pilares de la herramienta. En este post usted comprenderá el proceso utilizado por el PP para buscar lo que necesita ser mostrado y también cómo es posible cambiar este proceso.

el propósito de este texto no es reemplazar la documentación oficial, que siempre debe consultarse. Su objetivo es poner en un solo lugar lo que los principiantes deben saber antes de comenzar a buscar más información.

qué es una consulta?

Query en inglés significa consulta y normalmente es el término utilizado para referirse a una declaración en SQL (Structured Query Language, es decir, lenguaje para Consultas estructuradas). En llamamos consultas a las consultas por contenido realizadas a través de la clase.

lo que es ?

es la clase PHP detrás de todas las búsquedas de contenido en . Acepta varios parámetros en su construcción, incluidos post types, metadatos, taxonomías y fechas, además de permitir la creación de parámetros personalizados.

la clase jQuery se activa en todas las solicitudes realizadas a su sitio, con la excepción de las excepciones de direcciones controladas por plugins que interrumpen el flujo normal. Cada vez que llamamos a una página, una publicación, un término de taxonomía, etc. interpreta la dirección solicitada a través de la API de reescritura y crea una jQuery basada en los argumentos interpretados.

etiquetas condicionales y jQuery

creando sus propios bucles: Jquery y get_posts ()

cuando nos referimos al bucle en la palabra estamos hablando de iterar (sin la n) por las publicaciones seleccionadas. Por lo general, solo tenemos un bucle, que siempre se parece al siguiente código:

si hay publicaciones, itere sobre ellas. La primera instrucción dentro de while es the_post(), que le dice a que coloque las variables de la siguiente publicación del bucle en la variable global $post, a través del método setup_postdata() de la clase.

así es como se ve el bucle principal, es decir, la iteración a través del conjunto de publicaciones que encontró al decodificar la solicitud y buscar los contenidos correspondientes. Si necesitamos otro conjunto de posts (contenido relacionado, contenidos de una determinada categoría fuera de su archivo o posts publicados después de lo que está siendo mostrado, por ejemplo) podemos hacerlo de dos maneras: creando un nuevo objeto o llamando a la función get_posts(). Las dos hacen lo mismo, pero te devolverán cosas diferentes.

crear un bucle con

un ejemplo simple de cómo crear un bucle con :

observe cómo la prueba y la iteración sobre have_posts() continúan allí, al igual que the_post(), pero esta vez como métodos de la variable que creamos.

la función reset_postdata() sirve para restaurar la variable global $post a su estado anterior a nuestra consulta, es decir, pondrá de nuevo en la global $post el post de la global $wp_query, que veremos más adelante.

creando un bucle con get_posts ()

el mismo ejemplo usando la función get_posts() :

la función get_the_title() acepta como parámetro un post diferente al de la variable global $post. Si necesita usar la función the_content (), por ejemplo, debe cambiar la global, de la siguiente manera:

diferencia entre Jquery y get_posts ()

la diferencia básica es a lo que tendrá acceso. Puedes acceder a la cantidad de posts encontrados en total ($query->found_posts) y al número de páginas posibles ($query->max_num_pages), por ejemplo. La función get_posts() por otro lado trae algunos argumentos ya completados además de que, por defecto, es un poco más rápida: pasa el parámetro no_found_rows como verdadero, evitando que la consulta final tenga la opción SQL_CALC_FOUND_ROWS y, con eso, exime a MySQL de pasar la cantidad total de filas encontradas.

Globalesquery x_query y Globais x_the_query

en este proceso de interpretar la solicitud y generar el objeto de la clase x_query, crea dos variables globales: $wp_query, que probablemente hayas visto en alguna parte, y $wp_the_query, que siempre será la copia original de lo solicitado por el usuario. Si alguien se mete con $wp_query, al menos podemos recuperarla a su estado normal con $wp_the_query. Esto es exactamente lo que hace la función.

Por qué no se debe usar query_posts () en los archivos de tema?

Este es el flujo predeterminado de una solicitud a una dirección de su sitio fuera del panel:

no debe usar query_posts () porque ya se ha llamado antes. Al volver a llamarla, duplicará el procesamiento (pidiéndole a que haga otra consulta) y, además, ignorará potencialmente lo que algunos complementos ya hayan usado.

la paginación es otro ejemplo de cómo usar query_posts() puede obstaculizar su trabajo. Si desea mostrar 15 publicaciones por página en una categoría determinada y tratar de sobrescribir la cantidad predeterminada del PPT a través de query_posts(), tendrá una situación en la que el primer elemento de la segunda página debería ser el 16º, pero en realidad es solo el 11..

cómo cambiar la consulta principal? Utilizar pre_get_posts

Usar query_posts() ha sido desaconsejable durante algún tiempo. De ahí para acá, muchos han explicado el porqué y alentado a los desarrolladores a usar la action pre_get_posts, con destaque especial para el Leo Baiano, que apodó la action cariñosamente de preetinho (el uso de juegos de palabras con el preetinho del Leo Baiano está autorizado en los comentarios).

el uso es simple. Para eliminar la paginación en la búsqueda, por ejemplo, puede usar el siguiente código en el functions.php de su tema:

el código asigna su función a hook pre_get_posts, por lo que su función se ejecutará cada vez que se procese una consulta. Dentro de ella necesitamos asegurarnos de que vamos a trabajar sólo en las consultas necesarias, así que probamos si realmente estamos en la parte» frontal » del sitio (de esa forma no estropeamos nada del panel), si estamos en la consulta principal de la página, es decir, si la consulta en cuestión es $wp_the_query y si esta consulta es de una búsqueda. Si todo esto es cierto cambiamos el atributo posts_per_page a -1, que significa no tener límite de posts.

otro ejemplo: eliminar una categoría de la lista de entradas de blog

si necesita muchos cambios puede unirse a todos en una sola función:

conclusión



+