Modificar las querys que realiza WordPress para obtener los Artículos que deseemos
Una de las cosas que poca gente sabe es que podemos modificar las querys que realiza WordPress para ejecutar las consultas que nosotros deseemos. Una forma de hacerlo es utilizando filtros.
A continuación os voy a poner un ejemplo en el cual quiero unir la tabla de posts con otra tabla para obtener metadatos de mis artículos. Para ello utilizo el filtro “posts_join“, que me permittirá modificar la claúsula JOIN de la consulta que realiza WordPress:
<?php function filtro_posts_join($join) { global $wpdb, $parametros; return $join . " JOIN $parametros->mitabla postmeta ON (postmeta.post_id = $wpdb->posts.ID and postmeta.meta_key in ($customFields)) "; } global $parametros; $customPosts = new WP_Query(); add_filter('posts_join', 'filtro_posts_join'); $customPosts->query('showposts=5' );//Utiliza los mismos parámetros que query_posts remove_filter('posts_join', 'filtro_posts_join'); while ($customPosts->have_posts()) { $customPosts->the_post(); /*Mostrar aquí la información del post que quieras*/ } ?> |
Existen mucho más filtros que nos pueden ser útiles:
post_limits
posts_distinct
posts_groupby
posts_join_paged
posts_orderby
posts_request
Con este filtro podremos ejecutar la query que queramos. Tiene prioridad sobre la query de WordPress.
posts_where_paged
posts_join
posts_where