Modificar las querys que realiza WordPress para obtener los Artículos que deseemos

Tuesday, October 26, 2010 12:51
Posted in category Programación, Wordpress

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

You can leave a response, or trackback from your own site.

Leave a Reply