web-dev-qa-db-fra.com

Comment commander les publications adjacentes (prev/next) par valeur de champ personnalisé?

J'utilise les Plus de champs et Plus de types plugins pour créer un type de message personnalisé appelé product. Ce type personnalisé est basé sur le type Post type.

L'un des champs s'appelle lot, qui est un entier représentant un numéro de lot pour une enchère.

J'ai créé une page de catégorie personnalisée qui génère une liste de liens pour chaque lot, classés par le champ lot. Cela fonctionne très bien.

$args = array(
  'post_type' => array('product'), 
  'cat' => 3,
  'meta_key' => 'lot',
  'orderby' => 'meta_value_num',
  'order' => 'ASC'
);

Cependant ... lorsque vous cliquez sur l’un des lots, les liens de publication Précédent et Suivant ne sont plus classés par le champ lot, ils sont classés par date de publication (qui est le WP défaut). J'essaie de comprendre comment je peux changer cet ordre de tri par défaut pour previous_post_link() et next_post_link() afin d'utiliser le champ personnalisé lot au lieu de la date de publication.

5
jessegavin

Vous pouvez filtrer SQL pour modifier votre condition dans get_adjacent_post() ( source ):

$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );

Ou filtrez complètement le lien dans adjacent_post_link() ( source ):

echo apply_filters( "{$adjacent}_post_link", $format, $link );

PS $adjacent peut être next ou previous.

5
Rarst