stefano dunn
Estoy usando get_posts para obtener una lista de publicaciones que coinciden con una palabra clave de búsqueda, el problema es que yo get_posts
‘s s
parámetro no busca etiquetas por defecto y usando tag_slug__in
no funcionará si la palabra clave se encuentra en el título y no en una etiqueta.
Las condiciones de mi búsqueda serían:
- Devolver publicación si la palabra clave existe en el título
- Devolver publicación si la palabra clave existe en Contenido
- Devolver publicación si la palabra clave es una etiqueta asociada con la publicación.
Cualquier idea sería fantástica. Probé el complemento “Buscar todo”, pero parece que solo funciona en la función de búsqueda predeterminada de WordPress.
El código a continuación es una versión simplificada de lo que he intentado, pero no cumple con los 3 criterios.
<?php
/* Set global query parameters */
$image_args = array(
'posts_per_page' => (isset($_GET['show_all']) && $_GET['show_all'] == 'true')? 100000 : 20,
'post_type' => 'attachment',
'post_mime_type' => array('image/jpeg', 'image/png'),
'meta_key' => 'language',
'meta_value' => "(^".$languages."$|\"".$languages."\"\;)",
'meta_compare' => 'REGEXP',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'media_category',
'field' => 'term_id',
'terms' => array($gallery_filter, $hotel->term_id),
'operator' => 'AND',
),
),
);
/* If page numbert given, add offet */
if(!empty($page_no))
$images_args['offset'] = 20*((int)$page_no-1);
/* If search term submitted, add it to the s parameter */
if(isset($_GET['search'])){
$image_args['tag_slug__in' = explode(" ", $_GET['search']);
$image_args['s'] = urldecode($_GET['search_term']);
}
puede utilizar su propia consulta. a continuación se muestra un ejemplo
$querystr="
SELECT *
FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->term_taxonomy, $wpdb->terms
WHERE ($wpdb->terms.name="$s"
OR $wpdb->posts.post_content LIKE '%$s%'
OR $wpdb->posts.post_title LIKE '%$s%')
AND $wpdb->posts.ID = $wpdb->term_relationships.object_id
AND $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id
AND $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id
ORDER BY $wpdb->posts.post_date DESC
";
$pageposts = $wpdb->get_results($querystr, OBJECT_K);
foreach ($pageposts as $post): setup_postdata($post);
echo the_title() . '<br /><br />';
endforeach;
he utilizado wpdb
consulta para obtener el resultado. Únase a las publicaciones y la tabla de taxonomía y luego obtenga el resultado distinto al $search_title
. Espero que esto funcione. 🙂
global $wpdb;
$querystr= "SELECT DISTINCT $wpdb->posts.* FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships
ON ( $wpdb->posts.ID = $wpdb->term_relationships.object_id )
LEFT JOIN $wpdb->term_taxonomy
ON ( $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id )
LEFT JOIN $wpdb->terms
ON ( $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id )
WHERE ( $wpdb->terms.name LIKE '%$search_title%'
OR $wpdb->posts.post_content LIKE '%$search_title%'
OR $wpdb->posts.post_title LIKE '%$search_title%' )
AND $wpdb->posts.post_status="publish"
AND $wpdb->posts.post_type="product"
ORDER BY $wpdb->posts.post_title ASC";
$query_object = $wpdb->get_results($querystr);
Revisar la Cláusulas posteriores filtra las ofertas de WordPress. Le permite conectar declaraciones de MySQL directamente a la consulta de WP.
Conozco los parámetros de WP_Query y he detallado mis intentos. Tengo mucha lógica condicional en mi consulta y pegar el código aquí lo sacará de contexto. Haré todo lo posible para simplificarlo.
– Stefan Dunn
27 de julio de 2015 a las 13:39
@rnevius, agregué el código que intenté o al menos una versión simplificada (que puede contener errores de sintaxis debido a la rapidez de producir un ejemplo).
– Stefan Dunn
27 de julio de 2015 a las 13:46
sería genial si
WP_Query
apoyaría un generalfield_query
argumento que admitía consultas de campos anidados. Sería un proyecto a largo plazo construir un complemento de este tipo, pero supongo que el punto de partida podría ser una propuesta como Éste. @PieterGoosen– birgire
28 de julio de 2015 a las 11:48
@birgire definitivamente sería una gran ventaja en el núcleo, o incluso solo un complemento. Hablando a largo plazo, he estado ocupado durante meses con un gran complemento de paginación que admite referencias, todas las clases están listas, solo necesito escribir las funciones finales, pero para sentarme y escribirlas … Me estoy volviendo perezoso y yo Voy a volver a tocar la guitarra otra vez, así que…
– Pieter Goosen
28 de julio de 2015 a las 12:02
sí, estoy de acuerdo, la búsqueda nativa podría ser más flexible. Creo que un soporte de consulta de campo anidado de este tipo podría resolver muchos problemas aquí en SO o WPSE. Veamos qué pasa con esto… (esperando con ansias el lanzamiento de tu plugin – diviértete con la guitarra 😉 @PieterGoosen
– birgire
28 de julio de 2015 a las 12:19