Búsqueda en múltiples tipos de entradas personalizadas y páginas

22 mar 2011, 18:26:30
Vistas: 14.8K
Votos: 10

Estoy utilizando el método de bainternet para buscar en tipos de entradas personalizadas y funciona muy bien. Sin embargo, recientemente me pidieron que devolviera más de un tipo de entrada "específico" y quizás páginas individuales para una sección de soporte en nuestro sitio.

Pensé que agregar campos ocultos adicionales lo resolvería, pero no funcionó. Y no tengo idea de cómo hacer que esto funcione con páginas.

¡Cualquier ayuda sería apreciada!


En la plantilla:

<form action="http://apollo.website.net/" id="searchform" method="get" role="search">
    <div><label for="s" class="screen-reader-text">Buscar:</label>
    <input type="text" id="s" name="s" value="">
    <input type="submit" value="Buscar" id="searchsubmit">

    <input type="hidden" name="post_type" value="software" />
    </div>
</form>

En functions.php:

/* Consultas de búsqueda personalizadas */
function SearchFilter($query) {
$post_type = $_GET['post_type'];
if (!$post_type) {
    $post_type = 'any';
}
if ($query->is_search) {
    $query->set('post_type', $post_type);
};
return $query;
} 
0
Todas las respuestas a la pregunta 3
3
19

cambiar

<input type="hidden" name="post_type" value="software" />

a

<input type="hidden" name="post_type[]" value="software" />
<input type="hidden" name="post_type[]" value="books" />

tengo que irme pero esto debería funcionar, solo agrega tantos campos ocultos como necesites para cada tipo de publicación

22 mar 2011 19:05:38
Comentarios

¡Funciona genial, gracias! ¿Hay alguna manera de que también devuelva páginas relacionadas?

Zach Shallbetter Zach Shallbetter
22 mar 2011 19:09:26

Los valores de entrada en arrays no funcionarán con el método GET, me sorprendería que ese código realmente haga lo que crees que hace...

t31os t31os
22 mar 2011 19:20:33

Error mío, funciona cuando se usa junto con el filtro de la pregunta anterior del usuario, ignora el comentario anterior.

t31os t31os
22 mar 2011 19:25:07
1

Podrías hacerlo así para alternar entre un tipo de publicación singular y cualquier tipo...

<input type="hidden" name="post_type" value="software" />
<label for="post_type">Buscar en todos</label>
<input type="checkbox" name="post_type" value="any" />

Cuando no está marcado, busca en tu tipo específico; cuando está marcado, establece el tipo de publicación a "cualquiera"...

22 mar 2011 19:30:10
Comentarios

Este es solo un consejo adicional para complementar la respuesta de Bainternet. ;)

t31os t31os
22 mar 2011 19:30:44
0

Para mí funciona esta solución (igual que la de Bainternet, pero sin los "[]" después de "post_type"):

  <input type="hidden" name="post_type" value="photo">
  <input type="hidden" name="post_type" value="video">

Y para obtener una plantilla específica para los resultados de búsqueda según el tipo de publicación (en functions.php):

function search_template_chooser($template) {
  global $wp_query;
  $post_type = get_query_var('post_type');
  if( $wp_query->is_search && $post_type == 'photo' || $wp_query->is_search && $post_type == 'video' ) {
    return locate_template('search-media.php');
  }
  return $template;
}

add_filter('template_include', 'search_template_chooser');
27 feb 2019 22:18:03