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

Guía: modificar la consulta global de WordPress

9

En algunos casos, es posible que deba modificar la consulta de publicación global que WordPress está realizando en cualquier página que esté visitando, tanto en el administrador como en la interfaz. En esta guía, veremos qué enlace usar y cómo cambiar los argumentos de consulta a su gusto.

Qué gancho usar

Primero necesita saber a qué gancho agregar su código. Necesitamos un gancho que suceda justo después de que WordPress haya configurado todos los argumentos, pero antes de que se ejecute la consulta real. Para esto usamos la acción pre_get_posts.

En este gancho obtienes un parámetro; que es un WP_Queryobjeto con el que WordPress luego ejecutará la consulta. Realiza cambios en el objeto, pero no necesita devolverlo ya que WordPress ejecutará la consulta con el objeto modificado.

add_action('pre_get_posts', function($query) { // Add your code here });

La modificación de la consulta probablemente requiera que use algunas etiquetas condicionales para especificar los casos en los que desea cambiarla. Por ejemplo, es posible que desee orientar la consulta solo en los resultados de búsqueda o en las vistas de categoría.

Etiquetas condicionales

WordPress tiene un montón de etiquetas condicionales que puede usar para especificar en qué casos desea agregar su código. Una etiqueta condicional es simplemente una función que devuelve verdadero o falso según el estado en el que se encuentre WordPress. Los ejemplos de etiquetas condicionales comunes son is_admin()para verificar si actualmente estamos en administración o interfaz, is_singular()si estamos en una sola publicación o página en interfaz, y is_search()si estamos en la página de resultados de búsqueda.

Tenga en cuenta que el enlace pre_get_postsse ejecuta tanto para el administrador como para la interfaz. Si solo desea afectar la consulta global en la interfaz, debe envolver su código dentro de una verificación if en la etiqueta condicional is_admin().

Nota sobre las etiquetas condicionales enpre_get_posts

Las etiquetas condicionales son geniales y todo eso, pero hay algunas cosas que se deben tener en cuenta cuando se usan dentro de pre_get_posts.

En primer lugar, debe familiarizarse con la etiqueta is_main_query(). La acción pre_get_postsen realidad se ejecuta varias veces para cada carga de página. Por ejemplo pre_get_posts, se ejecuta al generar cada menú (incluidos los de los widgets). Para modificar la consulta global real, por ejemplo, publicaciones para un archivo de categoría o resultados de búsqueda, debe orientar la "consulta principal" usando is_main_query().

En segundo lugar, debe tener en cuenta los casos en los que necesita verificar las etiquetas condicionales en el objeto proporcionado en lugar de llamar a la función "independientemente". Por lo general, cuando usa etiquetas condicionales, lo escribiría así:

if (is_main_query()) { // Do stuff }

Sin embargo, al usar pre_get_posts, hay algunas etiquetas condicionales que debe aplicar al objeto. Por ejemplo:

Siempre debe comprobar is_main_query()el objeto proporcionado en pre_get_posts. Lea la documentación de pre_get_posts para obtener más información.

Este es un ejemplo de cómo verificar si no estamos en administración y si estamos en la consulta de publicación principal:

Cambiar o agregar argumentos

Como estamos trabajando con un WP_Queryobjeto, puede consultar la documentación de WP_Query para saber cómo crear sus argumentos para personalizar la consulta de publicaciones. Tenga en cuenta que los argumentos ya están poblados. En ese caso, debe agregar o cambiar los valores existentes. O elimine los que desee eliminar.

Utiliza la set()función en el WP_Queryobjeto para establecer argumentos. El método acepta dos argumentos, el argumento clave y en segundo lugar el valor. Por ejemplo, establecer el posts_per_pageargumento se haría así:

En los casos en los que desee agregar o cambiar un argumento preexistente, normalmente lo haría guardando primero el argumento existente en una variable. Puedes usar el método get()para esto. Luego modifica la variable, agregando o fusionando matrices o lo que sea. Y finalmente, usa set()para reemplazar la variable modificada nuevamente en el objeto de consulta. Recomiendo usar var_dump()en el objeto para ver qué contiene, y esta también es una buena manera de verificar si sus etiquetas condicionales son correctas.

Aquí hay un ejemplo rápido de uso get()(simplemente verificando si está vacío), y si es así, agregue sus propios argumentos con set().

Nota sobre tax_query

WordPress tiene subclases separadas para manejar la parte de taxonomía (WP_Tax_Query) dentro de WP_Query. Si necesita realizar modificaciones de consulta de taxonomía más complejas, es posible que la pre_get_postsacción sea demasiado temprana. Algunos valores pueden estar vacíos porque se completan más tarde. En este caso, es mejor que uses la acción parse_tax_queryen lugar de pre_get_posts. Lea la documentación de este gancho para ver si esto es para usted.

Conclusión

Los argumentos que agrega o cambia dependen completamente de lo que desea hacer, pero ahora debería tener una idea de las estrategias para obtener la consulta global. Si necesita obtener información sobre el WP_Queryobjeto y cómo usar sus argumentos, mi publicación sobre cómo consultar publicaciones podría ser de su interés.

Fuente de grabación: awhitepixel.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