WordPress Version: 6.2
/**
* Retrieves the adjacent post relational link.
*
* Can either be next or previous post relational link.
*
* @since 2.8.0
*
* @param string $title Optional. Link title format. Default '%title'.
* @param bool $in_same_term Optional. Whether link should be in the same taxonomy term.
* Default false.
* @param int[]|string $excluded_terms Optional. Array or comma-separated list of excluded term IDs.
* Default empty.
* @param bool $previous Optional. Whether to display link to previous or next post.
* Default true.
* @param string $taxonomy Optional. Taxonomy, if `$in_same_term` is true. Default 'category'.
* @return string|void The adjacent post relational link URL.
*/
function get_adjacent_post_rel_link($title = '%title', $in_same_term = false, $excluded_terms = '', $previous = true, $taxonomy = 'category')
{
$post = get_post();
if ($previous && is_attachment() && $post) {
$post = get_post($post->post_parent);
} else {
$post = get_adjacent_post($in_same_term, $excluded_terms, $previous, $taxonomy);
}
if (empty($post)) {
return;
}
$post_title = the_title_attribute(array('echo' => false, 'post' => $post));
if (empty($post_title)) {
$post_title = $previous ? __('Previous Post') : __('Next Post');
}
$date = mysql2date(get_option('date_format'), $post->post_date);
$title = str_replace('%title', $post_title, $title);
$title = str_replace('%date', $date, $title);
$link = $previous ? "<link rel='prev' title='" : "<link rel='next' title='";
$link .= esc_attr($title);
$link .= "' href='" . get_permalink($post) . "' />\n";
$adjacent = $previous ? 'previous' : 'next';
/**
* Filters the adjacent post relational link.
*
* The dynamic portion of the hook name, `$adjacent`, refers to the type
* of adjacency, 'next' or 'previous'.
*
* Possible hook names include:
*
* - `next_post_rel_link`
* - `previous_post_rel_link`
*
* @since 2.8.0
*
* @param string $link The relational link.
*/
return apply_filters("{$adjacent}_post_rel_link", $link);
}