Tri problème avec la fonction 'query_posts de dans wordpress. Trier par champ personnalisé ne fonctionne pas

wordpress.stackexchange https://wordpress.stackexchange.com/questions/6466

  •  16-10-2019
  •  | 
  •  

Question

0 vers le bas favori vote

Salut, je travaille avec wordpress où j'ai un système liste d'événements. Il y a un champ personnalisé dans mon appelé poste starting_time qui est timestamp unix. Maintenant, je veux tous les messages de court starting_time par cette commande query_post:

query_posts(array(
               'post_type' => 'event',
               'meta_key' => 'end_time',
               'meta_compare' =>'>=',
               'meta_value'=>time(),
               'order_by' => 'start_date',
             'order' => 'ASC'
));

Mais il ne fonctionne pas. Voici le site http://citystir.com/events/ . Je me fais l'écho de la start_time dans unix avant que le temps restant pour que vous puissiez voir la valeur. Et aussi mon ne fonctionne pas la pagination. Peut-être je l'ai fait quelque chose de mal dans la commande query_post.

S'il vous plaît réponse quelqu'un.

--------------------- Mise à jour -----------------

J'ai trouvé un merveilleux message ici kovshenin.com/archives/customize-posts-order-in-wordpress-via-custom-fields mais je ne l'ai pas obtenir travaillé. Peut-être par manque de ma connaissance. S'il vous plaît jeter un coup d'oeil et laissez-moi savoir si vous avez des suggestions. Je vais continuer à travailler sur ce point.

-------------------- Résolu -----------------

Modification order_by à orderby. Et je suis venu pour savoir que nous pouvons utiliser plusieurs fois méta clés si nous voulons ce ne sera pas un conflit. Voici le code final:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts(array(
'post_type' => 'event',
'meta_key' => 'end_time',
'meta_compare' =>'>=',
'meta_value'=>time(),
'meta_key' => 'start_time',
'orderby' => 'meta_value_num',
'post_per_page' => '-1',
'order' => 'ASC',
'paged' => $paged
));

Merci pour tout votre travail dur!

Était-ce utile?

La solution

order_by ne prend pas un nom du champ, il prend le type d'ordre. Ce qui pour le champ numérique personnalisé sera orderby=meta_value_num. Mais champ réel utilisé est pris de meta_key et vous utilisez déjà pour le filtrage. Voir Orderby Paramètres .

Alors vous ne pouvez pas tirer ce de cela facilement à l'instant, non sans filtrage et la modification résultant requête SQL. À venir WP 3.1 aura beaucoup plus amélioré et le soutien de l'interrogation flexible pour les champs personnalisés et il sera probablement plus facile que.

Autres conseils

En ce qui concerne votre être cassé en page - quand vous faites un query_posts personnalisé comme celui-ci, il écrase tout vars de la requête initiale. Si vous voulez travailler en page, vous devez passer explicitement dans une var « paginée » dans les args de la requête. Obtenez le paginée var existant comme celui-ci:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Ensuite, ajoutez à votre requête args:

'paged' => $paged
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top