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

Checkout seguro: cobra sin perder conversiones

Configura un checkout seguro en WordPress y WooCommerce para proteger pagos, reducir errores de integración…

hace % días

Checkout seguro: cobra sin perder conversiones

Configura un checkout seguro en WordPress y WooCommerce para proteger pagos, reducir errores de integración…

hace % días

¿Qué aporta la integración de Bizum y métodos similares en el proceso de pago?

El comercio electrónico español, que se encuentra en pleno crecimiento y transformación, vive actualmente un…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Mejores addons para suscripciones WooCommerce

Compara los mejores addons para suscripciones WooCommerce y elige pagos, membresías y automatizaciones compatibles con…

hace % días

Desarrollo de plugins a medida WordPress

El desarrollo de plugins a medida WordPress resuelve pagos, reservas y flujos propios con integración…

hace % días