Categorías: Tutoriales

Buscar en WordPress por el ID del post

Estoy desarrollando un sistema basado en WordPress de postventa, a base de código propio pero usando herramientas muy WordPress como WooCommerce para gestionar los pagos, custom post types para los tickets y comentarios del CPT para los refrescos de los comentarios (entre otras cosas).

La verdad que el resultado está siendo bastante bueno, pero vaya, de eso no iba esta entrada. Esta entrada iba de como dice el título como permitir buscar por ID en los formularios de búsqueda de WordPress, ya sea en el frontal o en el escritorio.

¿Y esto por qué lo necesitamos? Porque los ticket tienen un ID propio y para el servicio postventa viene muy bien buscar por ID directamente. Y es que si tú aquí pones el ID de una entrada no te la encuentra porque la búsqueda se hace por otros parámetros:

Así que nada, a buscar solución al problema, bastante sencilla por cierto gracias a los hooks que nos ofrece WordPress:

add_filter( 'pre_get_posts', 'incluir_ids_busquedas' );
function incluir_ids_busquedas( $query ){
        if( !is_admin() )
            return;

        if( $query->query_vars['s'] != '' && is_search() && absint( $query->query_vars['s'] ) ){
            $query->set( 'p', absint( $query->query_vars['s'] ) );
            $query->set( 's', '' );
        }
    }   

¿Qué se hace?

  1. Se pregunta si estás en el admin o no, para si no, salir, realmente podrías quitarlo si quieres que la gente te busque en el frontal por ID pero en este caso no era práctico
  2. Luego preguntamos tres condiciones:
    1. Que la variable ‘s’ exista dentro de las variables de la consulta, la que indica que se está buscando algo
    2. Que estemos en una búsqueda
    3. Y que la variable ‘s’ sea un entero
  3. Si se dan estas condiciones:
    1. La variable p que se rellena solo cuando se está buscando un post específico se igual al entero positivo que viene en la búsqueda
    2. Se quita el contenido de s para que no choque con la búsqueda por post_id indicada en p

Nota: Hay una valoración incrustada en esta entrada, por favor, visita esta entrada para valorarla.

Almacenamos las IPs desde la que se envían las valoraciones para evitar fraudes

Francisco Javier Carazo Gil

Entradas recientes

¿Por qué falla Bizum en WooCommerce? 9 causas

Por qué falla Bizum WooCommerce: detecta errores de credenciales, firma, entorno y pedidos para recuperar…

hace % días

Plugin gratuito Redsys WordPress: qué revisar

Elige un plugin gratuito Redsys WordPress con criterio: compatibilidad, seguridad, configuración bancaria y límites para…

hace % días

Qué necesito para activar CECA Online en mi web

¿Qué necesito para activar CECA Online? Revisa contrato bancario, datos del terminal, seguridad, pruebas y…

hace % días

Cómo elegir una pasarela para suscripciones

Aprende a elegir una pasarela para suscripciones en WordPress: revisa recurrencia, compatibilidad, seguridad y soporte…

hace % días

Plugin Bizum WordPress para cobrar con control

Elige un plugin Bizum WordPress compatible con tu flujo de venta, configura la pasarela bancaria…

hace % días

Cómo aceptar CECA en reservas de WordPress

Aprende cómo aceptar CECA en reservas WordPress, configurar pagos seguros y confirmar cada reserva sin…

hace % días