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

RedSys para Contact Form 7 ahora acepta preautorizaciones

RedSys aparte de los pagos normales, llamados autorizaciones, acepta una variedad de operaciones: desde autorizaciones…

hace % días

Ordenar productos de forma diferente por cada categoría en WooCommerce

WooCommerce permite ordenar los productos de una forma nativa, para poder presentar primero los que…

hace % días

Evitar que se instalen los temas por defecto de WordPress cada vez que actualizas el núcleo

Cada vez que hay una actualización grande del núcleo WordPress, por defecto WordPress te instala…

hace % días

Pantalla LCD: ¿qué es?

Una pantalla LCD es una pantalla delgada y hecha de cristal líquido. Se usa en…

hace % días

Flujos de pago con Gravity Flow y RedSys

De todos los plugins que existen para Gravity Forms, que son numerosos porque la propia…

hace % días

CMS, ¿Qué es y qué ventajas tiene?

Un CMS, como WordPress, facilita la creación y gestión de contenido en la web, sin…

hace % días