Tentando criar uma pesquisa que não apenas pesquise os padrões (título, conteúdo etc.), mas também um campo personalizado específico.
Minha consulta atual:
$args = array(
'post_type' => 'post',
's' => $query,
'meta_query' => array(
array(
'key' => 'speel',
'value' => $query,
'compare' => 'LIKE'
)
)
);
$search = new WP_Query( $args )
...
Isso retorna postagens que correspondem à consulta de pesquisa E à meta consulta, mas eu também gostaria que retornasse postagens onde simplesmente corresponde a qualquer uma delas.
Alguma ideia?
Respostas:
Eu tenho procurado por horas para uma solução para este problema. A mesclagem de matrizes não é o caminho a seguir, especialmente quando as consultas são complexas e você deve poder adicionar a meta-consultas no futuro. A solução que é simplisticamente bonita é mudar 's' para uma que permita a pesquisa de títulos e meta-campos.
Uso:
fonte
Muito código pode ser reduzido usando uma versão modificada desta resposta .
fonte
$result->post_count = count( $result->posts );
porque eu estava obtendo apenas 1 resultado caso contrário.Otimizei um pouco a resposta do @Stabir Kira
Agora você pode pesquisar por (título, conteúdo, excrept) ou (meta campo) ou (ambos).
fonte
De acordo com a sugestão de Nick Perkins , tive que mesclar duas consultas da seguinte forma:
fonte
Bem, é uma espécie de hack, mas funciona. Você precisa adicionar o filtro posts_clauses. Essa verificação da função de filtro para qualquer palavra da consulta existe no campo personalizado "speel" e a consulta restante permanece intacta.
fonte
eu tive o mesmo problema, para o meu novo site eu adicionei uma nova meta "title":
functions.php
E então .. basta adicionar algo assim:
O que você acha dessa solução alternativa?
fonte
Todas as soluções acima retornam resultados apenas se houver uma correspondência na meta-chave speel. Se você tiver resultados em outro lugar, mas não nesse campo, não receberá nada. Ninguém quer isso.
É necessária uma junção esquerda. A seguir, será criado um.
fonte
Esta é uma ótima solução, mas você precisa corrigir uma coisa. Quando você chama 'post__in', precisa definir uma matriz de IDs e $ unique é uma matriz de postagens.
exemplo:
fonte
A resposta do @ satbir-kira funciona muito bem, mas apenas pesquisará o título da meta e da postagem. Se você deseja pesquisar por meta, título e conteúdo, aqui está a versão modificada.
E aqui está o seu uso:
Substitua
$get['search']
pelo seu valor de pesquisafonte