WordPress Version: 6.2
/**
* Retrieves the adjacent post link.
*
* Can be either next post link or previous.
*
* @since 3.7.0
*
* @param string $format Link anchor format.
* @param string $link Link permalink format.
* @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 terms 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 The link URL of the previous or next post in relation to the current post.
*/
function get_adjacent_post_link($format, $link, $in_same_term = false, $excluded_terms = '', $previous = true, $taxonomy = 'category')
{
if ($previous && is_attachment()) {
$post = get_post(get_post()->post_parent);
} else {
$post = get_adjacent_post($in_same_term, $excluded_terms, $previous, $taxonomy);
}
if (!$post) {
$output = '';
} else {
$title = $post->post_title;
if (empty($post->post_title)) {
$title = $previous ? __('Previous Post') : __('Next Post');
}
/** This filter is documented in wp-includes/post-template.php */
$title = apply_filters('the_title', $title, $post->ID);
$date = mysql2date(get_option('date_format'), $post->post_date);
$rel = $previous ? 'prev' : 'next';
$string = '<a href="' . get_permalink($post) . '" rel="' . $rel . '">';
$inlink = str_replace('%title', $title, $link);
$inlink = str_replace('%date', $date, $inlink);
$inlink = $string . $inlink . '</a>';
$output = str_replace('%link', $inlink, $format);
}
$adjacent = $previous ? 'previous' : 'next';
/**
* Filters the adjacent post link.
*
* The dynamic portion of the hook name, `$adjacent`, refers to the type
* of adjacency, 'next' or 'previous'.
*
* Possible hook names include:
*
* - `next_post_link`
* - `previous_post_link`
*
* @since 2.6.0
* @since 4.2.0 Added the `$adjacent` parameter.
*
* @param string $output The adjacent post link.
* @param string $format Link anchor format.
* @param string $link Link permalink format.
* @param WP_Post|string $post The adjacent post. Empty string if no corresponding post exists.
* @param string $adjacent Whether the post is previous or next.
*/
return apply_filters("{$adjacent}_post_link", $output, $format, $link, $post, $adjacent);
}