WordPress : Faites en sorte que Next et Previous sur single-$posttype.php utilisent le même ordre que archive-$posttype.php

Publié par Jean-Michel le

J’ai des événements de type de publication personnalisés et j’affiche ces événements en utilisant archive-events.php et single-events.php à partir de la hiérarchie des modèles. J’ai une requête personnalisée dans archive-events.php

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$events_query = new WP_Query( array (
  'post_type' => 'events',
  'orderby' => 'meta_value',
  'meta_key' => '_fulldate',
  'order' => 'ASC',
  'paged' => $paged,
  'meta_query' => array ( array(
      'key' => '_fulldate',
      'value' => $cutoff_date,
      'type' => 'numeric',
      'compare' => '>' ) ) )
);

Cela affiche les événements dans l’ordre de la date de l’événement (par opposition à la date publiée). Tout fonctionne bien jusqu’à ce que je mette previous_post_link()et next_post_link()dans single-events.php. Ce qui se passe alors, c’est que les liens suivant et précédent m’amènent à l’événement suivant et précédent par date de publication plutôt que par date d’événement.

Je suis un peu confus quant à la façon dont events-single.php est censé savoir quel est le prochain événement. Dois-je faire une sorte de requête là-dessus aussi, parce que je ne le suis pas pour le moment ? C’est juste un fichier « unique » standard.

Quelqu’un pourrait-il m’aider, j’ai été de haut en bas et je ne sais pas comment le faire.

Solution n°1 trouvée

Vous avez probablement besoin d’un filtre get_{$adjacent}_post_joinet get_{$adjacent}_post_sortde les faire fonctionner.

Toutes mes excuses, mais je n’ai pas le temps pour le moment de travailler sur les filtres et de les déboguer, mais peut-être que cela vous aidera à démarrer.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *