¿Cómo personalizar el motor de búsqueda para WordPress?
WordPress tiene un motor de búsqueda incorporado, sin embargo, no es tan sofisticado como el motor de búsqueda de Google (por ejemplo, la búsqueda de WP no incluye comentarios). Para utilizar un motor de búsqueda personalizado de terceros, puede insertar el siguiente código en el archivo de plantilla de función, por ejemplo , functions.php
function wp_use_google_search( $wp_query) {
$s = '';
if (isset($wp_query->query_vars['s'])) {
$s = trim($wp_query->query_vars['s']);
}
if (!$s) { // empty query returns
return;
}
// get current host
$host = strtolower($_SERVER['HTTP_HOST']);
// use google
$search_engine = '<a class="vglnk" target="_blank" href="https://www.google.com/search?q=" rel="nofollow"><span>https</span><span>://</span><span>www</span><span>.</span><span>google</span><span>.</span><span>com</span><span>/</span><span>search</span><span>?</span><span>q</span><span>=</span></a>';
// concatenate the query
$query = urlencode($s. ' site:'. $host);
// redirect to search engine
wp_redirect($search_engine. $query);
// end the page
exit;
}
// add customized search handler
add_action('parse_query', 'wp_use_google_search');
Otra ventaja de usar un motor de búsqueda avanzado de terceros para la indexación de publicaciones de wordpress es que reduce la sobrecarga de su servidor, especialmente si hay mucho tráfico y su ancho de banda es limitado. También puede personalizar el motor de búsqueda, por ejemplo, usando google.co.uk en lugar de google.com si solo se dirige a usuarios del Reino Unido.
Puede guardar el archivo anterior en una ruta común a la que puedan acceder todos los blogs de wordpress si tiene varios blogs alojados en el mismo servidor (VPS o servidor dedicado ). Por lo tanto, en cada functions.php en child theme, simplemente puede incluir:
// Assume we save the above function in file /commom/path/to/wp_search.php
require('/commom/path/to/wp_search.php');
Tenga en cuenta, asegúrese de no olvidar <?php (al comienzo del archivo PHP) .. y ?> (etiqueta de fin de archivo opcional) cuando guarde la función anterior en un archivo php individual.