Hoy me ha dado por probar un pequeño buscador en la página del listado de posts del blog. Es muy simple y se puede hacer con php y html. Lo he puesto de pruebas en el index.php, que es mi página raíz del blog, la página principal.
He añadido este código:
La fuente de la que he sacado el form de búsqueda es esta web de developer.wordpress.org, concretamente adaptando el código del "Default HTML4 Form". Lo anterior se ve así:
Me he basado en el buscador de los blogs Bear Blog, aunque funcionan algo diferente. En mi caso, tienes que escribir una palabra o lo que quieras buscar y dar al enter; y ya ves los posts con esa palabra que buscas. En el caso de Bear Blog va filtrando según buscas. Creo que es porque en mi caso todo es con php y html, y quizá Bear Blog use javascript. De hecho, si apago el javascript con UblockOrigin en un blog de Bear Blog, deja de verse el buscador.
También, tal como está el mío, busca no solo en el título de los posts, sino en todo el contenido. Aquí por ejemplo hay una búsqueda del concepto "mastodon", y se ve que filtra posts con mastodon en el título y entradas donde se menciona mastodon en el texto. Lo veo útil:
Para conseguir que busque solo en los títulos, habría que modificar el functions.php añadiendo lo siguiente:
function __search_by_title_only( $search, &$wp_query ) { global $wpdb; if(empty($search)) { return $search; // skip processing - no search term in query } $q = $wp_query->query_vars; $n = !empty($q['exact']) ? '' : '%'; $search = $searchand = ''; foreach ((array)$q['search_terms'] as $term) { $term = esc_sql($wpdb->esc_like($term)); $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')"; $searchand = ' AND '; } if (!empty($search)) { $search = " AND ({$search}) "; if (!is_user_logged_in()) $search .= " AND ($wpdb->posts.post_password = '') "; } return $search; } add_filter('posts_search', '__search_by_title_only', 500, 2);
Este código lo he sacado de esta web de stackoverflow.com. Así, la misma búsqueda del concepto mastodon, filtra los posts con dicho concepto en el título de los posts:
No sé si dejaré el buscador visible o si lo dejaré apagado en el código, pero está bien tenerlo ahí por si acaso; y no sé si prefiero que busque en todo el contenido de los posts o solo en el título. Lo voy a dejar unos días probando ambas opciones a ver qué tal. La verdad es que con el control+f se va a todos lados.
Edito hoy mismo: al final no dejo el buscador: efectivamente, con control+f se llega a lo mismo.