No estás registrado (Registrarse)

Vanilla 1.1.10 es un producto de Lussumo. Para más información: Documentación, Soporte.

    •  
      CommentAuthorignatius
    • CommentTimeMar 8th 2011
     # 1
    No sé si es el martes de Carnaval o que ando un poco espeso, el caso es que estoy haciendo un custom query en WP en el que necesito por un lado:

    Los posts de una categoría determinda (id 7), que estén publicados y tengan un campo personalizado con valores vid_mostrar=S. Hasta aquí todo bien, no ha habido problema:


    $querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts
    INNER JOIN $wpdb->postmeta wpostmeta ON wposts.ID= wpostmeta.post_id
    INNER JOIN $wpdb->term_relationships wptr ON wposts.ID = wptr.object_id
    WHERE wptr.term_taxonomy_id='7'
    AND wpostmeta.meta_key = 'vid_mostrar'
    AND wpostmeta.meta_value = 'S'
    AND wposts.post_status = 'publish'
    AND wposts.post_type = 'post'
    ORDER BY RAND() LIMIT 1
    ";


    El caso es que después necesito un paso más, los posts que cumplan los requisitos anteriores y que además tengan las etiquetas etiqueta-a o etiqueta-b (cualquiera de las dos). Lo ideal sería referirnos a las etiquetas por su 'slug' y no por su id. Aunque si es mucho más complejo podemos usar el id para simplificar.

    ¿Me echa alguien una mano? Invito a cervezas :cata3:
    •  
      CommentAuthorfcovicente
    • CommentTimeMar 9th 2011
     # 2
    ¿No sería un poco menos complicado usando el objeto WP Query? Tiene las herramientas para discriminar posts por categoría, tag y/o campo personalizado.

    http://codex.wordpress.org/Function_Reference/WP_Query
    •  
      CommentAuthorignatius
    • CommentTimeMar 9th 2011
     # 3
    Posted By: fcovicente¿No sería un poco menos complicado usando el objeto WP Query?


    Estuve trasteando también con eso pero no he sido capaz ni he encontrado información sobre la selección de argumentos que incluyan condiciones OR tipo etiqueta-a O etiqueta-b... :confuso:
    •  
      CommentAuthorfcovicente
    • CommentTimeMar 9th 2011
     # 4
    La condición Or se aplica separando con comas las tags:

    Display posts that have "either" of these tags:

    $query = new WP_Query( 'tag=bread,baking' );

    Lo tuyo sería más o menos y sin probar:

    $args = array(
    'tag' => 'etiqueta-a,etiqueta-b',
    'meta_query' => array(
    'key' => 'vid_mostrar',
    'value' => 'S',
    ),
    'orderby' => 'rand'
    );

    $query = new WP_Query( $args );
    •  
      CommentAuthorignatius
    • CommentTimeMar 9th 2011
     # 5
    Muchísimas gracias fcovicente, tomo nota. Ahora mismo no puedo probarlo pero mañana, sin falta, retomaré este asunto.
    No había caido en la coma, interesante lo de either. La verdad es que utilizando los argumentos es bastante más simple que con el query a la base de datos.
    Ya te diré si me funciona pero, en cualquier caso, :cata2:
    •  
      CommentAuthorfcovicente
    • CommentTimeMar 9th 2011
     # 6
    Sino funciona pasándole los parámetros por array, prueba como string, lo malo de la documentación es que los ejemplos o los trae como array o los trae como string pero pocas veces de ambas formas, entonces la notación a veces no esta clara, al menos para mi.

    Suerte! :bigsmile:
    •  
      CommentAuthorignatius
    • CommentTimeMar 30th 2011
     # 7
    He tardado un poco más de lo que pensaba en meterle mano a esto, pero tu planteamiento ha funcionado perfectamente.
    Muchas gracias, de nuevo.