2010-08-09 21 views
0

J'essaie d'afficher les messages expirés après les messages non expirés. Comment puis-je faire ceci?Wordpress - Tri des publications par date d'expiration

J'ai ajouté un champ personnalisé "Date d'expiration", dans lequel je stocke les dates d'expiration au format aaaa/mm/jj. Le problème est, si je commande mes résultats par ce champ, les dates d'expiration futures viennent en premier.

J'ai donc créé un cron-job répétitif qui compare les dates et crée un champ personnalisé secondaire "Date d'expiration transmise" pour les publications dont les dates sont passées. J'ai essayé de commander par ce champ, mais WP ne montre que les messages avec une valeur pour ce champ - les messages IE sans date d'expiration, ou des dates d'expiration dans le futur, ne montrent pas. J'ai donc essayé d'ajouter automatiquement les valeurs '99999999' pour tout message qui n'a pas encore expiré. Le problème est, WP ne peut pas commander par des valeurs de champ personnalisées ALORS la date - IE les premiers messages avec la valeur '99999999' sont dans un ordre aléatoire.

J'ai également essayé d'effectuer deux requêtes pour les publications, une sans messages expirés, une avec, puis la fusion de ces deux tableaux. Donc, les données sont dans le bon ordre - mais ça a foiré la pagination de WP.

Aide, je suis à court d'idées!

Répondre

0

Cela pourrait fonctionner, mais je suis en train de trier les messages sur ma catégorie pages La fonction Wp_get_recent_posts est généralement utilisée pour créer des boucles personnalisées, sans modifier la boucle dans les pages de catégorie (modèle d'archive). En fin de compte, je l'ai trié avec ça. J'ai ajouté ce code au-dessus de mon modèle d'archive:

global $query_string; 
query_posts($query_string . "&orderby=meta_value&meta_key=Expiration Date Passed&order=DESC"); 

J'ai créé un champ personnalisé « de tri » appelée « date d'expiration Passed ». Un travail cron cherche ensuite à voir si le message a une date d'expiration. Si ce n'est pas le cas, ou si la date est dans le futur, il met la date de publication du poste + 20 ans dans la colonne de tri. Si l'expiration de la publication est passée, elle place la date de publication de la publication dans la colonne de tri. Ainsi, il en résulte l'ordre que je cherchais:

1) Messages qui n'ont pas expiré, Date pour 2) les messages qui ont expiré, Date pour

Je pensais que je posterais cette solution dans le cas où tout le monde D'autre voulait savoir.

0

Puisque vous avez une « date d'expiration Passed » champ personnalisé, vous pouvez d'abord créer deux ensembles de messages utilisant ce champ personnalisé dans vos arguments de get_posts de faire la différence entre le courant & expiré Messages

meta_key et $ meta_value $ (chaîne) (facultatif) Afficher uniquement les publications contenant un champ méta (personnalisé) avec cette clé et cette valeur. Les deux paramètres doivent être définis, ou aucun ne fonctionnera. Valeur par défaut: Aucun

extrait de: http://codex.wordpress.org/Function_Reference/wp_get_recent_posts

alors vous serez en mesure de trier chaque ensemble la façon dont vous voulez

Questions connexes