Estoy usando el filtro posts_where para modificar las búsquedas de los usuarios en una web, pero descubrí que algunos widgets predeterminados como las "publicaciones más recientes" también usan este filtro y su comportamiento también se modifica. Estoy tratando de encontrar una manera de evitar que cualquier cosa que no sean las búsquedas de los usuarios utilicen el filtro posts_where.
Este es mi código:
add_filter( 'posts_where' , 'posts_where_statement' );
function posts_where_statement( $where ) {
global $wp_query;
global $expp;
global $wpdb;
$local_db = $wpdb->prefix."posts";
$front_page_id = get_option('page_on_front');
if ( ('page' != get_option('show_on_front') || $front_page_id != $wp_query->query_vars['page_id']) && (!($wp_query->is_search)) )
return $where;
//some $where modifications
remove_all_actions ( '__after_loop');
return $where;
}
¿Hay alguna otra función o una forma de hacer que este enlace / filtro solo funcione con la consulta de búsqueda? (el que obtiene los resultados de la entrada del usuario)
$q
Aunque no soy fanático .$wp_query
pero eso podría confundirse con el uso global$wp_query
, otro uso$qry
o$query
, pero eso también puede ser confuso cuando estamos lidiando con la consulta SQL ;-) Me conformé con$q
este breve fragmento y también parece más simple que, por ejemplo, por lo$wp_query_obj
general, tomo las múltiples if-contidtions en una línea separada @MichaelEcklund