Buscar publicaciones por ID en admin


10

Estoy buscando una forma de buscar publicaciones por ID, preferiblemente con soporte para tipos de publicaciones personalizadas. Esperaba que hubiera un complemento que habilitara esta funcionalidad, pero no pude encontrar nada. Cualquier idea sería muy apreciada, gracias.


¿Puede explicar qué quiere decir buscar por ID? Cada publicación tiene una ID única, ¿cómo podría esta búsqueda generar más de un resultado?
t31os

@ t31os Un único resultado es lo que quiero :). Me refiero a poder buscar publicaciones por ID en el backend de administración. Si va a domain.com/wp-admin/edit.php , tiene un campo de búsqueda en la parte superior, y puede localizar fácilmente una publicación buscando en los títulos de las publicaciones. Necesito poder hacer lo mismo, pero usando ID. Digamos, ingrese '1343', presione 'buscar', obtenga la publicación # 1343.
pereyra

¿Cómo funciona para la búsqueda frontend?
Chrispo

Respuestas:


13

No estoy seguro de entender por qué querrías consultar por ID, pero eso dice que es posible de una manera hacky (me gusta este método porque es simple).

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

Todo lo que debe hacer es buscar usando el cuadro de búsqueda normal usando un #prefijo (hash) delante del ID numérico.

#123

.. devolvería la publicación con un ID de 123.

Estoy seguro de que se pueden tomar rutas más complicadas para hacer esto, pero no veo ningún problema con este enfoque, a menos que tenga muchas publicaciones con títulos que comienzan con un hash (pero siempre puede cambiar el hash por otro personaje).

Espero que ayude. :)


@ t310s esto funciona, ¡muchas gracias! El único problema (aunque puramente cosmético) que obtengo es que en la parte superior de los resultados de búsqueda que estoy obteniendo: Resultados de búsqueda para "" - mientras que los resultados de búsqueda para "# 123" serían ideales. De lo contrario, esto es exactamente lo que necesitaba, gracias de nuevo.
pereyra

Ese es un efecto secundario desafortunado de desarmar los términos de búsqueda justo antes de la consulta, pero ahora he revisado edit.php y puedo ver una solución fácil ... :) Actualice la unset()llamada a lo siguiente ... unset( $wp->query_vars['s'], $_GET['s'] );y la búsqueda el texto del término desaparecerá al hacer la búsqueda de ID ... ps feliz de ayudar ... :)
t31os

Muy tarde en el día, pero me topé con esta publicación y es posible volver a llenar los resultados de búsqueda para ... enganchándome en el get_search_queryfiltro. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.