2011 <!-- 4 -->
Modificar las búsquedas en WordPress
Si queremos modificar las búsquedas que ofrece WordPress para que devuelva lo que nosotros queremos tan solo hay que hacer dos funciones para dos filtros:
add_filter('posts_results', 'mi_search');
function mi_search($posts) {
$s = get_query_var('s');
if (condicion($s)) {
$posts = array();
$paged = intval(get_query_var('paged'));
if ($paged < 1) $paged = 1;
$posts_per_page = intval(get_query_var('posts_per_page'));
$from = ($paged-1)*$posts_per_page;
global $wpdb;
$_posts = $wpdb->get_results("select post_id from $wpdb->posts where loquesea order by post_id desc limit $from, $posts_per_page");
foreach($_posts as $p) {
$posts[] = get_post($p->post_id);
}
}
return $posts;
}
add_filter('found_posts', 'mi_found_posts');
function mi_found_posts($n) {
$s = get_query_var('s');
if (condicion($s)) {
global $wpdb;
$res = $wpdb->get_results("select count(*) as n from $wpdb->posts where condicion ");
$n = $res[0]->n;
}
return $n;
}
February 11, 2011 a las 3:31 am
Hola,
Parece que el filtro
posts_resultsya esta obsoleto, uno equivalente podría serposts_request.Saludos!
February 11, 2011 a las 8:55 am
Hola Francisco
Pues sinceramente, ni idea de si está obsoleto, yo me metí en el código de WP y vi que hacía uso de ese filtro.
Muchas gracias por el aviso, ¿dónde puedo ver que el filtro está obsoleto para la próxima?
Saludos
February 11, 2011 a las 3:09 pm
Qué tal,
Me dí cuenta que estaba depreciado porque no lo encontré en includes/query.php donde pensé que corresponde, tampoco esta en la documentación oficial de filtros y por último lo busqué en google y en otro repositorio de hooks encontré http://adambrown.info/p/wp_hooks/hook/posts_results
Me imagino que si no esta en la lista de filtros oficial, seguramente este depreciado y pronto a eliminarse, aunque yo buscaría directamente por el hook en cuestión para asegurarme.
Un saludo!
February 11, 2011 a las 5:09 pm
Me encanta la página que has pasado, nunca me acuerdo de meterla en “Marcadores” y me viene de perlas que me la hayas pasado
Gracias