Pesquisar mensagens por ID no administrador

10

Estou procurando uma maneira de pesquisar postagens por ID, de preferência com suporte para tipos de post personalizados. Eu esperava que houvesse um plug-in que habilitasse essa funcionalidade, mas não encontrei nada. Qualquer idéia seria muito apreciada, obrigado.

pereyra
fonte
Você pode explicar o que você quer dizer com pesquisar por ID, cada postagem tem um ID exclusivo; como essa pesquisa poderia gerar mais do que um único resultado?
T31os
@ t31os Um único resultado é o que eu quero :). Refiro-me à possibilidade de pesquisar postagens por ID no back-end do administrador. Se você acessar domain.com/wp-admin/edit.php, terá um campo de pesquisa na parte superior e poderá localizar facilmente uma postagem pesquisando nos títulos das postagens. Eu preciso fazer o mesmo, mas usando IDs. Diga, digite '1343', pressione 'pesquisar', obtenha a postagem # 1343.
Pereyra
como funciona para a pesquisa de front-end?
Chrispo #

Respostas:

13

Não sei se entendi por que você gostaria de consultar por ID, mas isso disse que é possível de uma maneira hacky (eu gosto desse método porque é simples).

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;
}

Tudo o que você faz é pesquisar usando a caixa de pesquisa regular usando um #prefixo (hash) na frente do ID numérico.

#123

..varia a postagem com um ID 123.

Tenho certeza de que há rotas mais complicadas que podem ser tomadas para fazer isso, mas não vejo problemas com essa abordagem, a menos que você tenha muitas postagens com títulos que começam com um hash (mas você sempre pode trocá-lo por outro personagem).

Espero que ajude. :)

t31os
fonte
@ t310s isso funciona, muito obrigado! o único problema (embora puramente cosmético) que recebo é que, no topo dos resultados de pesquisa que estou recebendo: Resultados de pesquisa para "" - enquanto os resultados de pesquisa para "# 123" seriam ideais. Caso contrário, é exatamente isso que eu precisava, obrigado novamente.
Pereyra
Esse é um efeito colateral lamentável de desabilitar os termos de pesquisa pouco antes da consulta, mas agora observei novamente o edit.php. Posso ver uma solução fácil ... :) Atualize a unset()chamada para o seguinte ... unset( $wp->query_vars['s'], $_GET['s'] );e a pesquisa termo texto vai desaparecer ao fazer a busca ID .. ps feliz em ajudar .. :)
t31os
Muito tarde, mas me deparei com esta postagem e é possível preencher novamente os resultados de pesquisa para ... conectando-nos ao get_search_queryfiltro. add_filter( 'get_search_query', function() { return $_GET['s']; } );
Mike