WordPress.org

Make WordPress Core

Ticket #11694: pagination-rel-canonical.3.patch

File pagination-rel-canonical.3.patch, 3.0 KB (added by joostdevalk, 5 years ago)

Patch for rel=canonical on paginated posts

  • wp-includes/post-template.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    719719 * @return string Link.
    720720 */
    721721function _wp_link_page( $i ) {
    722         global $wp_rewrite;
    723         $post = get_post();
    724 
    725         if ( 1 == $i ) {
    726                 $url = get_permalink();
    727         } else {
    728                 if ( '' == get_option('permalink_structure') || in_array($post->post_status, array('draft', 'pending')) )
    729                         $url = add_query_arg( 'page', $i, get_permalink() );
    730                 elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') == $post->ID )
    731                         $url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/" . $i, 'single_paged');
    732                 else
    733                         $url = trailingslashit(get_permalink()) . user_trailingslashit($i, 'single_paged');
    734         }
    735 
     722        $url = get_paginated_post_url( get_the_ID(), $i );
    736723        return '<a href="' . esc_url( $url ) . '">';
    737724}
    738725
  • wp-includes/link-template.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    7373 *
    7474 * @since 1.0.0
    7575 *
    76  * @param int $id Optional. Post ID.
     76 * @param int|object $id Optional. Post ID or post object.
    7777 * @param bool $leavename Optional, defaults to false. Whether to keep post name or page name.
    7878 * @return string
    7979 */
     
    18351835}
    18361836
    18371837/**
     1838 * Return URL for post at the required page
     1839 *
     1840 * @param int $post_id Post to create link for
     1841 * @param int $i Page number to create link for
     1842 *
     1843 * @return string
     1844 */
     1845function get_paginated_post_url( $post_id, $i ) {
     1846        global $wp_rewrite;
     1847        $post = get_post( $post_id );
     1848
     1849        if ( 1 == $i ) {
     1850                $url = get_permalink( $post );
     1851        } else {
     1852                if ( '' == get_option( 'permalink_structure' ) || in_array( $post->post_status, array( 'draft', 'pending' ) ) )
     1853                        $url = add_query_arg( 'page', $i, get_permalink( $post ) );
     1854                elseif ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_on_front' ) == $post->ID )
     1855                        $url = trailingslashit( get_permalink( $post ) ) . user_trailingslashit( "$wp_rewrite->pagination_base/" . $i, 'single_paged' );
     1856                else
     1857                        $url = trailingslashit( get_permalink( $post ) ) . user_trailingslashit( $i, 'single_paged' );
     1858        }
     1859        return $url;
     1860}
     1861
     1862/**
    18381863 * Retrieve the Press This bookmarklet link.
    18391864 *
    18401865 * Use this in 'a' element 'href' attribute.
     
    23202345
    23212346        $link = get_permalink( $id );
    23222347
    2323         if ( $page = get_query_var('cpage') )
    2324                 $link = get_comments_pagenum_link( $page );
     2348        if ( $page = get_query_var( 'page' ) )
     2349                $link = get_paginated_post_url( $id, $page );
     2350
     2351        if ( $cpage = get_query_var('cpage') )
     2352                $link = get_comments_pagenum_link( $cpage );
    23252353
    23262354        echo "<link rel='canonical' href='$link' />\n";
    23272355}