WordPress常用函数: get_adjacent_post_link

文章目录
  1. 描述
  2. 语法
  3. 参数
  4. 返回值
  5. 关系
  6. 源码

描述

获取相邻文章的链接

语法

get_adjacent_post_link( string $format, string $link, bool $in_same_term = false, array|string $excluded_terms = '', bool $previous = true, string $taxonomy = 'category' )

参数

  • $format (string) (Required) (Default value: false) 锚文本格式
  • $link (string) (Required) 固定链接格式
  • $in_same_term (bool) (Optional) 文章是否在同一分类
  • $excluded_terms (array|string) (Optional) (Default value: '') 排除分类的ID
  • $previous (bool) (Optional) (Default value: true) 是否获取上一篇文章
  • $taxonomy (string) (Optional) (Default value: 'category') 如果 $in_same_term 设置为true表示限定的分类

返回值

(string) 当前帖子相关的上一篇文章或下一篇文章的链接网址。

关系

调用

wp-includes/link-template.php: get_adjacent_post()

被用

wp-includes/link-template.php: adjacent_post_link()
wp-includes/link-template.php: get_previous_post_link()
wp-includes/link-template.php: get_next_post_link()

源码

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'.
     *
     * @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 $post     The adjacent post.
     * @param string  $adjacent Whether the post is previous or next.
     */
    return apply_filters( "{$adjacent}_post_link", $output, $format, $link, $post, $adjacent );
}