Eu criei um tipo de postagem personalizado e anexei alguns campos personalizados a ele. Agora, gostaria que a pesquisa que os autores possam realizar na tela da lista de postagens personalizadas (no back-end do administrador) também fosse realizada nos meta-campos e não apenas no título e no conteúdo, como de costume.
Onde posso conectar-me e qual código devo usar?
Imagem de exemplo
Stefano
custom-post-types
custom-field
search
Stefano
fonte
fonte
Respostas:
Resolvi filtrar a consulta adicionando a junção na tabela postmeta e alterando a cláusula where. dicas sobre como filtrar a cláusula WHERE (geralmente exigem pesquisa e substituição de expressões regulares) estão aqui no codex :
fonte
A resposta de Stefano é ótima, mas falta uma cláusula distinta:
Adicione o código acima, atualize-o e ele funcionará sem duplicatas.
fonte
Isso vai funcionar,
fonte
if ( $query->query['post_type'] != 'your_custom_post_type' ){ return; }
parte superior da função interromperá a execução em outras pesquisas. Observe que a técnica nesta resposta não pesquisa mais o post_title e adicioná-lo novamente não é trivial.get_search_query()
que chamam maisget_query_var( 's' )
. Como "s" está definido como sequência vazia, os resultados da pesquisa para "" sempre terão um valor vazio entre as aspas. Existe um ajuste nessa solução que contorna isso?Resposta 1: adicione este código no arquivo de função e altere e adicione mais o nome das colunas que você usou no seu tipo de postagem personalizado
Resposta 2: Recomendado Use este código no arquivo de funções sem nenhuma alteração
fonte
Não é uma pesquisa, mas alguns "selecionam" por valor distinto.
No arquivo functions-iworks-posts-filter.zip Você tem um exemplo de como adicionar filtro para postagem regular por alguma meta_key. Eu acho que é fácil converter.
fonte
A versão do código aqui em algumas respostas que modifica o parâmetro meta_query da WP_Query da pesquisa em pre_get_posts não estava mais pesquisando o post_title. Adicionando a capacidade de pesquisar o título da postagem, OU os valores meta não podem ser executados diretamente no WP_Query sem modificar o SQL, infelizmente, pois essa pergunta é elaborada a seguir : Usando a meta consulta ('meta_query') com uma consulta de pesquisa ('s')
Combinei algumas das técnicas aqui para obter uma versão de trabalho que evite preg_replaces e muita modificação de SQL (eu gostaria que pudesse ser totalmente evitada). A única desvantagem é que, após uma pesquisa, o texto da legenda na parte superior da página indica "Resultados da pesquisa para ''". Acabei de ocultar isso com CSS para o tipo de postagem personalizada do meu plugin.
fonte