web-dev-qa-db-fra.com

Requête personnalisée WordPress

J'ai des publications qui utilisent un champ personnalisé pour la date de début et la date de fin. query_posts renvoie un tableau de publications existant dans la catégorie que je filtre. Comment interroger les publications à l’aide de ce champ personnalisé portant la date 03/11/2010 et non le tableau complet. La pagination fonctionne sur le tableau complet, de sorte qu'elle renvoie tous les articles. Je peux utiliser un if sinon pour ne montrer que les messages plus récents qu'aujourd'hui, alors la pagination ne fonctionne pas. Aurais-je besoin de créer une requête mysql personnalisée?

3
InnateDev
<?php

 $querystr = "
    SELECT wposts.* 
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wposts.ID = wpostmeta.post_id 
    AND wpostmeta.meta_key = 'date_field' 
    AND wpostmeta.meta_value = '03/11/2010' 
    AND wposts.post_status = 'publish' 
    AND wposts.post_type = 'post' 
    ORDER BY wposts.post_date DESC
 ";

 $pageposts = $wpdb->get_results($querystr, OBJECT);

 ?>

Ensuite, vous accéderiez à $ pageposts en tant qu'objet

1
st4ck0v3rfl0w

Vous pouvez créer une requête personnalisée en utilisant les filtres suivants: query_vars, posts_join, posts_where, posts_groupby. voici le lien codex vers des requêtes personnalisées . Quelques exemples sont énumérés ici pour obtenir de l'aide.

1
Pragati Sureka

Vous pouvez le faire avec WP_Query en utilisant meta_query .

$my_query = new WP_Query( array(
    'meta_query' => array(
        array(
            'key' => 'date_field',
            'value => '03/11/2010',
            'compare' => '='
        )
    )
) );

Par défaut, il recherchera les publications.

Je suggère également de stocker la date au format aaaa/mm/jj. Le tri par ce champ sera beaucoup plus facile si vous le faites ainsi.

0
Krzysiek Dróżdż