<?php
/**
 * Desactivar funcionalidad de búsqueda nativa de WordPress
 *
 * Este archivo desactiva completamente la búsqueda nativa de WordPress.
 * Las rutas de búsqueda retornarán 404.
 *
 * Comportamiento:
 * - Rutas de búsqueda (ej. /search/ o /?s=query desde raíz) → 404
 * - URLs válidas con parámetro ?s= → entregar página normal, ignorar parámetro
 *
 * @package ROI_Theme
 * @since 1.0.0
 * @link https://github.com/prime-leads-app/analisisdepreciosunitarios.com/issues/3
 */

// Exit if accessed directly
if (!defined('ABSPATH')) {
    exit;
}

/**
 * Desactivar widget de búsqueda de WordPress
 *
 * Remueve el widget de búsqueda del admin para prevenir su uso.
 *
 * @since 1.0.0
 */
function roi_disable_search_widget() {
    unregister_widget('WP_Widget_Search');
}
add_action('widgets_init', 'roi_disable_search_widget');

/**
 * Bloquear queries de búsqueda
 *
 * Detecta búsquedas y las convierte en 404.
 * Si es una URL válida con parámetro ?s=, ignora el parámetro y entrega la página normal.
 *
 * @since 1.0.0
 * @param WP_Query $query La instancia de WP_Query.
 */
function roi_disable_search_queries($query) {
    // Solo procesar en el frontend y en la query principal
    if (is_admin() || !$query->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 '<meta name="robots" content="noindex,nofollow">' . "\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');
