Buscar parámetros de consulta por título y meta

2 minutos de lectura

avatar de usuario
SokoLBY

ayúdenme a crear parámetros de consulta para buscar por título y meta, ejemplo:
artículo:
1 – compañía de títuloscontenido: asdf, meta_field_vendor: asd
2 – título: borrador, contenido: empresameta_field_vendor: asd
3 – título: ttcmp, contenido: asdf, meta_field_vendor: asd
4 – título: myrus, contenido: asdf, meta_field_vendor: empresa

mi cadena de búsqueda ?s=empresa

Quiero que el resultado de la búsqueda sea artículos: 1,2,4

Este qyuery arg

$args['wp_query'] = array(
    'post_type' => $post_type,
    'posts_per_page' => 5,
    's' => $search_s,
);

resultado 1 y 2

Este qyuery arg

$args['wp_query'] = array(
    'post_type' => $post_type,
    'posts_per_page' => 5,
    'meta_query' => array (
        array(
            'key' => '_item_prop_title',
            'value' => $search_s,
            'compare' => 'EXISTS'
        )
    )
);

resultado 4

¿Cómo puedo hacer una consulta para el resultado 1,3,4?

$args['wp_query'] = array(
    'post_type' => $post_type,
    'posts_per_page' => 5,
    's' => $search_s,
    'meta_query' => array (
        array(
            'key' => '_item_prop_title',
            'value' => $search_s,
            'compare' => 'EXISTS'
        )
    )
);

¡Salud!

lo que podrías hacer por tu problema es un proceso dual de búsqueda, si no es una respuesta óptima pero si funciona…

 $search_s="mykeyword";

    $q1 = get_posts(array(
        'post_type' => 'post',
        's' => $search_s
    ));

    $q2 = get_posts(array(
            'post_type' => 'post',
            'meta_query' => array(
                array(
                   'key' => 'my_meta_box',
                   'value' => $search_s,
                   'compare' => 'LIKE'
                )
             )
    ));

    $merged = array_merge( $q1, $q2 );

    $post_ids = array();
    foreach( $merged as $item ) {
        $post_ids[] = $item->ID;
    }

    $unique = array_unique($post_ids);

    $posts = get_posts(array(
        'post_type' => 'post',
        'post__in' => $unique,
        'post_status' => 'publish',
        'posts_per_page' => -1
    ));

    if( $posts ) : foreach( $posts as $post ) :
        setup_postdata($post);

        the_title();


    endforeach; 
    endif;

  • Seguí tu sugerencia y funciona. Muchísimas gracias.

    – SokoLBY

    8 de abril de 2015 a las 6:35

¿Has probado algo como?:

$args['wp_query'] = array(
    'post_type' => $post_type,
    'posts_per_page' => 5,
    's' => $search_s,
    'meta_query' => array(
        array(
            'key'       => '_item_prop_title',// Name of the key you want to search. Check your BD to be sure this is the correct name
            'value'     => $search_s,
            'compare'   => 'LIKE',// You can use '=' instead if you want to be more restrictive.
        ),
    ),
);

  • Esto significaría un “Y” entre los dos: solo devolvería publicaciones con $search_s en el título Y en la clave meta, desafortunadamente

    –Erenor Paz

    2 de mayo de 2018 a las 12:53

¿Ha sido útil esta solución?