Pesquisa personalizada pelo tipo de postagem personalizado, meta e campos de pesquisa personalizados
-
-
[Você viuesta resposta] (http://wordpress.stackexchange.com/questions/66815/exting-search-Query-with-additional- sentence-value/66904#66904)?[Have you seen this answer](http://wordpress.stackexchange.com/questions/66815/extending-search-query-with-additional-sentence-value/66904#66904)?
- 0
- 2013-07-08
- kaiser
-
Eunão,masparecemassivamente complexopara o queestoutentandofazer?I'd not but it seems massively complex for what I'm trying to do?
- 0
- 2013-07-08
- James J
-
"Massivamente complexo" significa que vocênão quer lertantotexto,certo?: P Porfavor,leia.Isso lhetrarámetade dotempomínimo."massively complex" means you don't want read that much text, right? :P Please read it. It will bring you down half the way minimum.
- 1
- 2013-07-08
- kaiser
-
Qualquerprogressonessa questão?Any progress on that question?
- 0
- 2013-08-01
- kaiser
-
2 respostas
- votos
-
- 2013-07-08
Se você quiserestender sua consulta,você deveestendê-lo através do
pre_get_posts
-filter. Em seguida,bastafazer um "campopersonalizado" oumeta consulta .add_action( 'pre_get_posts', 'wpse105969_extended_search' ); function wpse105969_extended_search( $query ) { // Make sure we got a search query // and we're only modifying the main query. if ( ! $query->is_main_query() AND '' === $query->get( 's' ) AND 'your_custom_post_type' === $query->get( 'post_type' ) ) return $query; // Alter whatever you need: Make, Model, etc. $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ) ); return $query; }
If you want to extend your query, you should extend it through the
pre_get_posts
-filter. Then just do a "Custom Field" or meta query.add_action( 'pre_get_posts', 'wpse105969_extended_search' ); function wpse105969_extended_search( $query ) { // Make sure we got a search query // and we're only modifying the main query. if ( ! $query->is_main_query() AND '' === $query->get( 's' ) AND 'your_custom_post_type' === $query->get( 'post_type' ) ) return $query; // Alter whatever you need: Make, Model, etc. $query->set( 'meta_query', array( 'relation' => 'OR', array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ) ); return $query; }
-
Oi obrigadopela resposta -eunão uso realmente o campo 's' que aspesquisasnormais do WordPressexigem (sóestouprocurando os detalhespostaispersonalizados).Existe algumamaneiraparanão usar o campo 'S'noformulário depesquisa,lutandoparaencontrarinformações sobreisso.Obrigadonovamente.Hi thanks for the answer - I dont actually use the 's' field that normal wordpress searches require (im only search for the custom post types meta details). Is there anyway to NOT use the 's' field in the search form, struggling to find info on this. Thanks again.
- 0
- 2013-07-08
- James J
-
Além disso,adicionei seu código àsminhasfunções.phpe adicionamosnosmeus campos,mas quandoeu salvo quebra o WordPress (semerros).Nada do WordPress Works (NAV,Postsetc).Also, I've added your code to my functions.php and added in my fields but when i save it breaks wordpress (no errors). Nothing from wordpress works (nav, posts etc).
- 0
- 2013-07-08
- James J
-
@Jamesj Porfavor,poste uma atualização com o código _your_.DICA: Você alterou onome dotipo Postpersonalizadoe você definiu `WP_DEBUG`para` verdadeiro`@JamesJ Please post an update with _your_ code. Hint: Did you change the custom post type name and did you set `WP_DEBUG` to `true`?
- 0
- 2013-07-09
- kaiser
-
- 2018-08-07
Aquiestá o código. Vocêpode alterar
$post_type
e$custom_fields
de acordo com suasnecessidades.function extend_admin_search( $query ) { // Extend search for document post type $post_type = 'document'; // Custom fields to search for $custom_fields = array( "_file_name", ); if( ! is_admin() ) return; if ( $query->query['post_type'] != $post_type ) return; $search_term = $query->query_vars['s']; // Set to empty, otherwise it won't find anything $query->query_vars['s'] = ''; if ( $search_term != '' ) { $meta_query = array( 'relation' => 'OR' ); foreach( $custom_fields as $custom_field ) { array_push( $meta_query, array( 'key' => $custom_field, 'value' => $search_term, 'compare' => 'LIKE' )); } $query->set( 'meta_query', $meta_query ); }; } add_action( 'pre_get_posts', 'extend_admin_search' );
Here’s the code. You can change
$post_type
and$custom_fields
according to your needs.function extend_admin_search( $query ) { // Extend search for document post type $post_type = 'document'; // Custom fields to search for $custom_fields = array( "_file_name", ); if( ! is_admin() ) return; if ( $query->query['post_type'] != $post_type ) return; $search_term = $query->query_vars['s']; // Set to empty, otherwise it won't find anything $query->query_vars['s'] = ''; if ( $search_term != '' ) { $meta_query = array( 'relation' => 'OR' ); foreach( $custom_fields as $custom_field ) { array_push( $meta_query, array( 'key' => $custom_field, 'value' => $search_term, 'compare' => 'LIKE' )); } $query->set( 'meta_query', $meta_query ); }; } add_action( 'pre_get_posts', 'extend_admin_search' );
idgostaria de criar umformulário depesquisapara umtipo depostagempersonalizadoespecífico (veículo)e terfiltrosparaessetipo demetapersonalizado depostagenspersonalizados (preço,idade)e taxonomiaspersonalizadas (make). Isso substituirátotalmente apesquisa de sitese ser a únicapesquisa disponívelpara queeuia usar Search.php dentro domeumodelopersonalizado.
Eugosto dabuscapara olhar algo como:
Pesquisarnossos veículos
Faça (seleção caixa cheia detodas astaxonomiaspersonalizadas - Audi,BMWetc).
modelo (campo deentradanormalpara aspessoas digitar qualquer coisa).
Preçosem (caixa de seleção compreços apartir de 1000)
idade (seleção caixa com opções comomenos de 1 ano,menores de 3 anos,menores de 5 anos,menores de 10 anos).
Eu sounovoem campospersonalizadose não sei realmentepor onde começar (encontrei algunsexemplosno Google,masnenhumfazexatamente o queestou apontando). Eu realmentenão queria usar umplugintambém. Euestou supondo dentro de Search.php Eupeguei os dadospassados doformulárioe usá-lopara criar $ Argsparapassarpara WP_Query?
Alguémpoderiame apontarna direção certa,porfavor? Agradecemos antecipadamente