web-dev-qa-db-fra.com

Lien précédent/suivant par méta valeur dans CPT

J'utilise le code suivant pour paginer entre les types de publication personnalisés et il ne semble pas utiliser méta_key ou meta_value_num et je ne peux pas comprendre pourquoi. Le CPT est configuré pour avoir hierarchique => true et le type de capacité est une page.

C'est le code que j'utilise pour la pagination (ce qui ne semble pas faire de différence - j'ai essayé d'utiliser orderby = menu_order et cela n'a pas fonctionné non plus).

<?php if
(get_adjacent_post(false, '', true))
{  echo previous_post_link('%link' , '<i class="fa fa-chevron-left"></i>');  }
else
{ echo previous_post_link('%link' , '<i class="fa fa-chevron-right"></i>');
$newest_post = get_posts('post_type=employee-bios&posts_per_page=1&order=DESC&meta_key=display-order&orderby=meta_value_num');  $newest_post_id = $newest_post[0]->ID;
echo '<a href="'.get_permalink($newest_post_id).'">
</a>'; } 
?>

<?php if
(get_adjacent_post(false, '', false))
    {  echo next_post_link('%link' , '<i class="fa fa-chevron-right"></i>'); }
else
    { echo ''; $eldest_post = get_posts('post_type=employee-bios&posts_per_page=1&order=ASC&meta_key=display-order&orderby=meta_value_num');  $eldest_post_id = $eldest_post[0]->ID;
echo '<a href="'.get_permalink($eldest_post_id).'" title="link to '.get_the_title($eldest_post_id).'"><i class="fa fa-chevron-right"></i></a>'; } ; 
?>

Et ceci est mon WP_Query (ce qui ne semble pas avoir d’importance non plus dans le schéma des choses - j’avais commencé par utiliser tout en ayant des posts et quand cela ne fonctionnait pas, j’ai essayé le WP_Query)

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
    'post_type' => 'employee-bios',
    'posts_per_page' => 1,
    'orderby' => meta_value_num,
    'meta_key' => 'display-order',
    'order' => 'ASC',
    'paged' => $paged
);
$my_query = new WP_Query( $args );
?>

Mon client souhaite pouvoir sélectionner l’ordre des bios des employés sur une page de destination. Ils doivent paginer dans l’ordre dans lequel ils ont été placés sur la page de destination (c’est pourquoi j’ai essayé d’utiliser à la fois menu_order et une tri).

J'ai également essayé de changer le type de capacité de page en publication et cela ne semble pas non plus faire la différence.

Toute aide serait très appréciée. Merci!

1
Justice Is Cheap

Je viens de trouver la réponse à cette question sur une autre pile ... comme c'est toujours le cas lorsque je pose une question, semble-t-il. Quoi que l'on fasse, en ce qui concerne la pagination dans cette situation, WP ira toujours par date de publication en premier. J'avais besoin d'ajouter une fonction qui utiliserait menu_order et trouverait la réponse ici .

function wpse73190_Gist_adjacent_post_sort( $sql ) {
    $pattern = '/post_date/';
    $replacement = 'menu_order';

    return preg_replace( $pattern, $replacement, $sql );
}

add_filter( 'get_next_post_sort', 'wpse73190_Gist_adjacent_post_sort' );
add_filter( 'get_previous_post_sort', 'wpse73190_Gist_adjacent_post_sort' );
1
Justice Is Cheap