Pour une raison quelconque, un attribut title
n'est pas ajouté aux appels next_post_link
et prev_post_link
dans WordPress. Comment puis-je en ajouter un?
Lorsque j'ai supprimé le dépôt sur GitHub, voici une nouvelle réponse.
add_filter( 'previous_post_link', 'wpse13044_adjacent_post_link_tooltip', 10, 2 );
add_filter( 'next_post_link', 'wpse13044_adjacent_post_link_tooltip', 10, 2 );
function wpse13044_adjacent_post_link_tooltip( $format, $link )
{
$previous = 'previous_post_link' === current_filter();
// Get the next/previous post object
$post = get_adjacent_post(
false
,''
,$previous
);
// Copypasta from cores `get_adjacent_post_link()` fn
'' === $title = get_the_title( $post->ID );
AND $title = $previous
? sprint( __( 'Previous Post: %s', 'your_textdomain' ), $title )
: sprint( __( 'Next Post: %s', 'your_textdomain' ), $title );
$format = str_replace(
'rel="'
,sprintf(
'title="%s" rel="'
,$title
)
,$format
);
return "<span class='some classes'>{$format}</span>";
}
Pas besoin de fonctions et de filtres. Tout ce que vous avez à faire est d'utiliser get_adjacent_post
au lieu de next_post_link
et prev_post_link
, Notez que get_adjacent_post
est utilisé pour obtenir les posts précédents et suivants, vous pouvez en lire plus ici Pour obtenir les posts précédents et son titre attribut utiliser cette
$prev_post = get_adjacent_post(false, '', true);
if(!empty($prev_post)) {
echo '<a href="' . get_permalink($prev_post->ID) . '" title="' . $prev_post->post_title . '">' . $prev_post->post_title . '</a>'; }
Pour obtenir le prochain article et son attribut title, utilisez ceci
$next_post = get_adjacent_post(false, '', false);
if(!empty($next_post)) {
echo '<a href="' . get_permalink($next_post->ID) . '" title="' . $next_post->post_title . '">' . $next_post->post_title . '</a>'; }
J'essaie de le faire maintenant aussi. La fonction de filtrage semble être le meilleur choix.
C'est là où j'en suis, mais je n'arrive pas à obtenir le titre du prochain ou du précédent message et à le transmettre au filtre.
Edit: Compris. Un peu hackey probablement, mais ça marche.
add_filter('next_post_link','add_title_to_next_post_link');
function add_title_to_next_post_link($link) {
global $post;
$post = get_post($post_id);
$next_post = get_next_post();
$title = $next_post->post_title;
$link = str_replace("rel=", " title='".$title."' rel", $link);
return $link;
}
add_filter('previous_post_link','add_title_to_previous_post_link');
function add_title_to_previous_post_link($link) {
global $post;
$post = get_post($post_id);
$previous_post = get_previous_post();
$title = $previous_post->post_title;
$link = str_replace("rel=", " title='".$title."' rel", $link);
return $link;
}
Un peu vieux peut-être, et je ne savais pas trop comment commenter une réponse ...
En bref, après avoir recherché la même solution, j'ai légèrement modifié la suggestion de Picard102:
/**
* Filter previous_post_link and next_post_link
*/
function filter_next_post_link($link) {
global $post;
$post = get_post($post_id);
$next_post = get_next_post();
$title = $next_post->post_title;
$link = str_replace("rel=", 'title="' . $title . '" rel=', $link);
return $link;
}
add_filter('next_post_link', 'filter_next_post_link');
function filter_previous_post_link($link) {
global $post;
$post = get_post($post_id);
$previous_post = get_previous_post();
$title = $previous_post->post_title;
$link = str_replace("rel=", 'title="' . $title . '" rel=', $link);
return $link;
}
add_filter('previous_post_link', 'filter_previous_post_link');
Réduit un peu le code.
/*
* Add "title=" to previous_post_link and next_post_link
*/
add_filter('next_post_link', function($link) {
$next_post = get_next_post();
$title = $next_post->post_title;
$link = str_replace('href=', 'title="'.$title.'" href=', $link);
return $link;
});
add_filter('previous_post_link', function($link) {
$previous_post = get_previous_post();
$title = $previous_post->post_title;
$link = str_replace('href=', 'title="'.$title.'" href=', $link);
return $link;
});