is_main_query()) { return; } // Si es una búsqueda if ($query->is_search()) { // Verificar si hay una página o post válido siendo solicitado // Si solo es búsqueda (sin otra query var significativa), retornar 404 $query_vars = $query->query_vars; // Si solo tiene el parámetro 's' y no está pidiendo una página específica if (isset($query_vars['s']) && empty($query_vars['page_id']) && empty($query_vars['pagename']) && empty($query_vars['name']) && empty($query_vars['p'])) { // Forzar 404 $query->set_404(); status_header(404); nocache_headers(); } } } add_action('pre_get_posts', 'roi_disable_search_queries', 10); /** * Remover enlaces de búsqueda del frontend * * Asegura que no haya formularios de búsqueda en el tema. * * @since 1.0.0 * @return string Cadena vacía. */ function roi_disable_search_form() { return ''; } add_filter('get_search_form', 'roi_disable_search_form'); /** * Prevenir indexación de páginas de búsqueda * * Añade noindex a cualquier página de búsqueda que pueda escapar. * * @since 1.0.0 */ function roi_noindex_search() { if (is_search()) { echo '' . "\n"; } } add_action('wp_head', 'roi_noindex_search', 1); /** * Remover rewrite rules de búsqueda * * Elimina las reglas de reescritura relacionadas con búsqueda. * * @since 1.0.0 * @param array $rules Reglas de reescritura de WordPress. * @return array Reglas modificadas sin búsqueda. */ function roi_remove_search_rewrite_rules($rules) { foreach ($rules as $rule => $rewrite) { if (preg_match('/search/', $rule)) { unset($rules[$rule]); } } return $rules; } add_filter('rewrite_rules_array', 'roi_remove_search_rewrite_rules');