web-dev-qa-db-fra.com

wp_query avec plusieurs champs personnalisés

Ma question est la suivante:

$products = new WP_Query( array(
        'post_type'      => 'ys_product',
        'orderby'        => array( 'date' ),
        'order'          => 'DESC',
        'posts_per_page' => 8,
        'meta_query'     => array(
            'relation' => 'AND',
            array(
                'key'   => 'ys_product_status',
                'value' => 'ok'
            ),
            array (
                'key'   => 'ys_product_start',
                'value' => date('Ymd'),
                'compare' => '>='
            ),
            array (
                'key'   => 'ys_product_end',
                'value' => date('Ymd'),
                'compare' => '<='
            )
        )
    ) );

Et sur ma base de données, j'ai deux éléments avec post_type 'ys_product', et avec post_meta comme ceci:

Objet 1

  • meta_key ys_product_status = 'ok'
  • meta_key ys_product_start = '20141101'
  • meta_key ys_product_end = '20141230'

Point 2

  • meta_key ys_product_status = 'ok'
  • meta_key ys_product_start = '20141101'
  • meta_key ys_product_end = '20150131'

Le résultat de la date ('Ymd') aujourd'hui est '20141226', ce qui semble clairement se situer entre ces limites.

Mais si je recherche uniquement en filtrant par 'ys_product_status' == 'ok'; Je récupère mes deux objets. Mais lorsque j'ajoute mes deux autres méta, il ne renvoie aucun résultat.

Qu'est-ce que je fais mal?

Merci et salutations. (Utilisation de WP 4.1)

2
yivi

Stupide typo, j'ai bien peur.

Ce:

array (
            'key'   => 'ys_product_start',
            'value' => date('Ymd'),
            'compare' => '>='
        ),
        array (
            'key'   => 'ys_product_end',
            'value' => date('Ymd'),
            'compare' => '<='
        )

Devrait être comme ça:

array (
            'key'   => 'ys_product_start',
            'value' => date('Ymd'),
            'compare' => '<='
        ),
        array (
            'key'   => 'ys_product_end',
            'value' => date('Ymd'),
            'compare' => '>='
        )
2
yivi