J'essaie d'utiliser les fonctions de lien de message suivant/précédent de Wordpress pour passer d'un message d'un type personnalisé à un autre en fonction du nom de famille d'une personne.
Le type personnalisé représente une personne dont le titre de l'article est au format "Nom de famille".
J'ai commandé les publications sur une page d'archives par nom de famille, mais je ne parviens pas à trouver comment je pourrais obtenir les liens suivants/précédents pour suivre également ce filtre. J'ai vu une autre question similaire et j'ai réussi à commander les liens suivant/précédent par titre mais uniquement par ordre alphabétique du prénom.
Si quelqu'un a une idée de la façon dont cela pourrait être fait, l'aide serait grandement appréciée.
En examinant les fonctions de chaîne MySQL , il semblerait que vous puissiez utiliser la fonction SUBSTRING_INDEX()
:
ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) {ASC|DESC} LIMIT 1
commander par le dernier mot du titre de l'article.
Vous pouvez tester cette méthode dans vos filtres orderby.
Voici un exemple de la manière dont on pourrait essayer de modifier le lien réponse par @WillLanni:
a) Partie suivante pour le type de publication personnalisé cpt
:
// Next CPT
add_filter( 'get_next_post_where', function( $where, $in_same_term, $excluded_terms )
{
global $post, $wpdb;
// Edit this custom post type to your needs
$cpt = 'post';
// Current post type
$post_type = get_post_type( $post );
// Nothing to do
if( $in_same_term || ! empty( $excluded_terms ) || $cpt !== $post_type )
return $where;
// Next CPT order by last Word in title
add_filter( 'get_next_post_sort', function( $orderby )
{
return " ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) ASC LIMIT 1 ";
} );
// Modify Next WHERE part
return $wpdb->prepare(
" WHERE
SUBSTRING_INDEX( p.post_title, ' ', -1 ) > SUBSTRING_INDEX( '%s', ' ', -1 )
AND p.post_type = '%s'
AND p.post_status = 'publish'
",
$post->post_title,
$post_type
);
}, 10, 3 );
b) Partie précédente pour le type d'article personnalisé cpt
:
// Previous CPT
add_filter( 'get_previous_post_where', function( $where, $in_same_term, $excluded_terms)
{
global $post, $wpdb;
// Edit this custom post type to your needs
$cpt = 'post';
// Current post type
$post_type = get_post_type( $post );
// Nothing to do
if( $in_same_term || ! empty( $excluded_terms ) || $cpt !== $post_type )
return $where;
// Previous CPT, order by last Word in post title
add_filter( 'get_previous_post_sort', function( $orderby )
{
return " ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) DESC LIMIT 1 ";
} );
// Modify Prev WHERE part
return $wpdb->prepare(
" WHERE
SUBSTRING_INDEX( p.post_title, ' ', -1 ) < SUBSTRING_INDEX( '%s', ' ', -1 )
AND p.post_type = '%s'
AND p.post_status = 'publish'
",
$post->post_title,
$post_type
);
}, 10, 3 );
où vous modifiez le type de message personnalisé 'cpt'
en fonction de vos besoins.