Make WordPress Core

Ticket #27716: 27716.patch

File 27716.patch, 31.4 KB (added by johnbillion, 10 years ago)
  • src/wp-includes/link-template.php

     
    1010 * Display the permalink for the current post.
    1111 *
    1212 * @since 1.2.0
    13  * @uses apply_filters() Calls 'the_permalink' filter on the permalink string.
    1413 */
    1514function the_permalink() {
    16         echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
     15        $permalink = get_permalink();
     16        /**
     17         * Filter the display of the permalink for the current post.
     18         *
     19         * @since 1.5.0
     20         *
     21         * @param string $permalink The permalink for the current post.
     22         */
     23        echo esc_url( apply_filters( 'the_permalink', $permalink ) );
    1724}
    1825
    1926/**
     
    3845        else
    3946                $string = untrailingslashit($string);
    4047
    41         // Note that $type_of_url can be one of following:
    42         // single, single_trackback, single_feed, single_paged, feed, category, page, year, month, day, paged, post_type_archive
     48        /**
     49         * Filter a URL which has had user trailing slashing applied to it.
     50         *
     51         * @since 2.2.0
     52         *
     53         * @param string $string      URL with or without a trailing slash.
     54         * @param string $type_of_url The type of URL being considered. Accepts 'single', 'single_trackback',
     55         *                            'single_feed', 'single_paged', 'feed', 'category', 'page', 'year',
     56         *                            'month', 'day', 'paged', 'post_type_archive'.
     57         */
    4358        $string = apply_filters('user_trailingslashit', $string, $type_of_url);
    4459        return $string;
    4560}
     
    129144
    130145        $permalink = get_option('permalink_structure');
    131146
     147        /**
     148         * Filter the permalink structure for a post before token replacement occurs.
     149         * Only applies to posts with post_type of 'post'.
     150         *
     151         * @since 3.0.0
     152         *
     153         * @param string  $permalink The site's permalink structure.
     154         * @param WP_Post $post      The post in question.
     155         * @param bool    $leavename Whether to keep the post name.
     156         */
    132157        $permalink = apply_filters('pre_post_link', $permalink, $post, $leavename);
    133158
    134159        if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft')) ) {
     
    139164                        $cats = get_the_category($post->ID);
    140165                        if ( $cats ) {
    141166                                usort($cats, '_usort_terms_by_ID'); // order by ID
     167                                /**
     168                                 * Filter the category that gets used in the %category% token of the permalink for a post.
     169                                 *
     170                                 * @since 3.5.0
     171                                 *
     172                                 * @param stdClass $cat  The category to use in the permalink.
     173                                 * @param array    $cats Array of all categories associated with the post.
     174                                 * @param WP_Post  $post The post in question.
     175                                 */
    142176                                $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post );
    143177                                $category_object = get_term( $category_object, 'category' );
    144178                                $category = $category_object->slug;
     
    179213        } else { // if they're not using the fancy permalink option
    180214                $permalink = home_url('?p=' . $post->ID);
    181215        }
     216        /**
     217         * Filter the permalink for a post.
     218         * Only applies to posts with post_type of 'post'.
     219         *
     220         * @since 3.0.0
     221         *
     222         * @param string  $permalink The post's permalink.
     223         * @param WP_Post $post      The post in question.
     224         * @param bool    $leavename Whether to keep the post name.
     225         */
    182226        return apply_filters('post_link', $permalink, $post, $leavename);
    183227}
    184228
     
    223267                $post_link = home_url($post_link);
    224268        }
    225269
     270        /**
     271         * Filter the permalink for a post with a custom post type.
     272         *
     273         * @since 3.0.0
     274         *
     275         * @param string  $post_link The post's permalink.
     276         * @param WP_Post $post      The post in question.
     277         * @param bool    $leavename Whether to keep the post name.
     278         * @param bool    $sample    Is it a sample permalink.
     279         */
    226280        return apply_filters('post_type_link', $post_link, $post, $leavename, $sample);
    227281}
    228282
     
    262316        else
    263317                $link = _get_page_link( $post, $leavename, $sample );
    264318
     319        /**
     320         * Filter the permalink for a page.
     321         *
     322         * @since 2.1.0
     323         *
     324         * @param string $link    The page's permalink.
     325         * @param int    $post_id The ID of the page.
     326         * @param bool   $sample  Is it a sample permalink.
     327         */
    265328        return apply_filters( 'page_link', $link, $post->ID, $sample );
    266329}
    267330
     
    298361                $link = home_url( '?page_id=' . $post->ID );
    299362        }
    300363
     364        /**
     365         * Filter the permalink for a page. Does not get called for the page set to page_on_front.
     366         *
     367         * @since 1.5.0
     368         *
     369         * @param string $link    The page's permalink.
     370         * @param int    $post_id The ID of the page.
     371         */
    301372        return apply_filters( '_get_page_link', $link, $post->ID );
    302373}
    303374
     
    341412        if ( ! $link )
    342413                $link = home_url( '/?attachment_id=' . $post->ID );
    343414
     415        /**
     416         * Filter the permalink for an attachment.
     417         *
     418         * @since 2.1.0
     419         *
     420         * @param string $link    The attachment's permalink.
     421         * @param int    $post_id The ID of the attachment.
     422         */
    344423        return apply_filters( 'attachment_link', $link, $post->ID );
    345424}
    346425
     
    359438        $yearlink = $wp_rewrite->get_year_permastruct();
    360439        if ( !empty($yearlink) ) {
    361440                $yearlink = str_replace('%year%', $year, $yearlink);
    362                 return apply_filters('year_link', home_url( user_trailingslashit($yearlink, 'year') ), $year);
     441                $yearlink = home_url( user_trailingslashit( $yearlink, 'year' ) );
    363442        } else {
    364                 return apply_filters('year_link', home_url('?m=' . $year), $year);
     443                $yearlink = home_url( '?m=' . $year );
    365444        }
     445        /**
     446         * Filter the permalink for a year archive.
     447         *
     448         * @since 1.5.0
     449         *
     450         * @param string $yearlink The permalink for the year archive.
     451         * @param int    $year     The year for the archive.
     452         */
     453        return apply_filters( 'year_link', $yearlink, $year );
    366454}
    367455
    368456/**
     
    384472        if ( !empty($monthlink) ) {
    385473                $monthlink = str_replace('%year%', $year, $monthlink);
    386474                $monthlink = str_replace('%monthnum%', zeroise(intval($month), 2), $monthlink);
    387                 return apply_filters('month_link', home_url( user_trailingslashit($monthlink, 'month') ), $year, $month);
     475                $monthlink = home_url( user_trailingslashit( $monthlink, 'month' ) );
    388476        } else {
    389                 return apply_filters('month_link', home_url( '?m=' . $year . zeroise($month, 2) ), $year, $month);
     477                $monthlink = home_url( '?m=' . $year . zeroise( $month, 2 ) );
    390478        }
     479        /**
     480         * Filter the permalink for a month archive.
     481         *
     482         * @since 1.5.0
     483         *
     484         * @param string $monthlink The permalink for the month archive.
     485         * @param int    $year      The year for the archive.
     486         * @param int    $month     The month for the archive.
     487         */
     488        return apply_filters( 'month_link', $monthlink, $year, $month );
    391489}
    392490
    393491/**
     
    414512                $daylink = str_replace('%year%', $year, $daylink);
    415513                $daylink = str_replace('%monthnum%', zeroise(intval($month), 2), $daylink);
    416514                $daylink = str_replace('%day%', zeroise(intval($day), 2), $daylink);
    417                 return apply_filters('day_link', home_url( user_trailingslashit($daylink, 'day') ), $year, $month, $day);
     515                $daylink = home_url( user_trailingslashit( $daylink, 'day' ) );
    418516        } else {
    419                 return apply_filters('day_link', home_url( '?m=' . $year . zeroise($month, 2) . zeroise($day, 2) ), $year, $month, $day);
     517                $daylink = home_url( '?m=' . $year . zeroise( $month, 2 ) . zeroise( $day, 2 ) );
    420518        }
     519        /**
     520         * Filter the permalink for a day archive.
     521         *
     522         * @since 1.5.0
     523         *
     524         * @param string $daylink The permalink for the day archive.
     525         * @param int    $year    The year for the archive.
     526         * @param int    $month   The month for the archive.
     527         * @param int    $day     The day for the archive.
     528         */
     529        return apply_filters( 'day_link', $daylink, $year, $month, $day );
     530
    421531}
    422532
    423533/**
     
    430540 */
    431541function the_feed_link( $anchor, $feed = '' ) {
    432542        $link = '<a href="' . esc_url( get_feed_link( $feed ) ) . '">' . $anchor . '</a>';
     543        /**
     544         * Filter the anchor tag for a feed link.
     545         *
     546         * @since 3.0.0
     547         *
     548         * @param string $link The complete anchor tag for a feed link.
     549         * @param string $feed The feed type, or an empty string for the default feed type.
     550         */
    433551        echo apply_filters( 'the_feed_link', $link, $feed );
    434552}
    435553
     
    467585                $output = home_url("?feed={$feed}");
    468586        }
    469587
     588        /**
     589         * Filter the permalink for a feed type.
     590         *
     591         * @since 1.5.0
     592         *
     593         * @param string $output The feed permalink.
     594         * @param string $feed   The feed type.
     595         */
    470596        return apply_filters('feed_link', $output, $feed);
    471597}
    472598
     
    506632                        $url = add_query_arg( array( 'feed' => $feed, 'p' => $post_id ), home_url( '/' ) );
    507633        }
    508634
     635        /**
     636         * Filter the permalink for the post comments feed.
     637         *
     638         * @since 2.2.0
     639         *
     640         * @param string $url The post comments feed permalink.
     641         */
    509642        return apply_filters('post_comments_feed_link', $url);
    510643}
    511644
     
    528661        if ( empty($link_text) )
    529662                $link_text = __('Comments Feed');
    530663
     664        /**
     665         * Filter the anchor tag for the comment feed link for a post.
     666         *
     667         * @since 2.8.0
     668         *
     669         * @param string $link    The complete anchor tag for the comment feed link.
     670         * @param int    $post_id The post ID.
     671         * @param string $feed    The feed type, or an empty string for the default feed type.
     672         */
    531673        echo apply_filters( 'post_comments_feed_link_html', "<a href='$url'>$link_text</a>", $post_id, $feed );
    532674}
    533675
     
    562704                $link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
    563705        }
    564706
     707        /**
     708         * Filter the feed link for a given author.
     709         *
     710         * @since 2.8.0
     711         *
     712         * @param string $link The author feed link.
     713         * @param string $feed The feed type.
     714         */
    565715        $link = apply_filters('author_feed_link', $link, $feed);
    566716
    567717        return $link;
     
    629779                $link = trailingslashit( $link ) . user_trailingslashit( $feed_link, 'feed' );
    630780        }
    631781
    632         if ( 'category' == $taxonomy )
     782        if ( 'category' == $taxonomy ) {
     783                /**
     784                 * Filter the feed link for a category.
     785                 *
     786                 * @since 2.8.0
     787                 *
     788                 * @param string $link The category feed link.
     789                 * @param string $feed The feed type.
     790                 */
    633791                $link = apply_filters( 'category_feed_link', $link, $feed );
    634         elseif ( 'post_tag' == $taxonomy )
     792        } elseif ( 'post_tag' == $taxonomy ) {
     793                /**
     794                 * Filter the feed link for a post tag.
     795                 *
     796                 * @since 2.8.0
     797                 *
     798                 * @param string $link The tag feed link.
     799                 * @param string $feed The feed type.
     800                 */
    635801                $link = apply_filters( 'tag_feed_link', $link, $feed );
    636         else
     802        } else {
     803                /**
     804                 * Filter the feed link for a taxonomy other than 'category' or 'post_tag'.
     805                 *
     806                 * @since 2.8.0
     807                 *
     808                 * @param string $link The taxonomy feed link.
     809                 * @param string $feed The feed type.
     810                 * @param string $feed The taxonomy name.
     811                 */
    637812                $link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
     813        }
    638814
    639815        return $link;
    640816}
     
    662838 * @return string
    663839 */
    664840function get_edit_tag_link( $tag_id, $taxonomy = 'post_tag' ) {
     841        /**
     842         * Filter the edit link for a tag (or term in another taxonomy).
     843         *
     844         * @since 2.7.0
     845         *
     846         * @param string $link The edit link.
     847         */
    665848        return apply_filters( 'get_edit_tag_link', get_edit_term_link( $tag_id, $taxonomy ) );
    666849}
    667850
     
    678861 */
    679862function edit_tag_link( $link = '', $before = '', $after = '', $tag = null ) {
    680863        $link = edit_term_link( $link, '', '', $tag, false );
     864        /**
     865         * Filter the anchor tag for the edit link for a tag (or term in another taxonomy).
     866         *
     867         * @since 2.7.0
     868         *
     869         * @param string $link The anchor tag for the edit link.
     870         */
    681871        echo $before . apply_filters( 'edit_tag_link', $link ) . $after;
    682872}
    683873
     
    709899
    710900        $location = add_query_arg( $args, admin_url( 'edit-tags.php' ) );
    711901
     902        /**
     903         * Filter the edit link for a term.
     904         *
     905         * @since 3.1.0
     906         *
     907         * @param string $location    The edit link.
     908         * @param int    $term_id     The term ID.
     909         * @param string $taxonomy    The taxonomy name.
     910         * @param string $object_type The object type (eg. the post type).
     911         */
    712912        return apply_filters( 'get_edit_term_link', $location, $term_id, $taxonomy, $object_type );
    713913}
    714914
     
    738938                $link = __('Edit This');
    739939
    740940        $link = '<a href="' . get_edit_term_link( $term->term_id, $term->taxonomy ) . '">' . $link . '</a>';
     941        /**
     942         * Filter the anchor tag for the edit link for a term.
     943         *
     944         * @since 3.1.0
     945         *
     946         * @param string $link    The anchor tag for the edit link.
     947         * @param int    $term_id The term ID.
     948         */
    741949        $link = $before . apply_filters( 'edit_term_link', $link, $term->term_id ) . $after;
    742950
    743951        if ( $echo )
     
    773981                $link = home_url( user_trailingslashit( $link, 'search' ) );
    774982        }
    775983
     984        /**
     985         * Filter the permalink for a search.
     986         *
     987         * @since 3.0.0
     988         *
     989         * @param string $link   The search permalink.
     990         * @param string $search The URL-encoded search term.
     991         */
    776992        return apply_filters( 'search_link', $link, $search );
    777993}
    778994
     
    8011017                $link .= "feed/$feed/";
    8021018        }
    8031019
     1020        /**
     1021         * Filter the feed link for a search.
     1022         *
     1023         * @since 2.5.0
     1024         *
     1025         * @param string $link The search feed link.
     1026         * @param string $feed The feed type.
     1027         * @param string $type The search type. One of 'posts' or 'comments'.
     1028         */
    8041029        $link = apply_filters('search_feed_link', $link, $feed, 'posts');
    8051030
    8061031        return $link;
     
    8301055        else
    8311056                $link = add_query_arg('withcomments', 1, $link);
    8321057
     1058        /**
     1059         * Filter the feed link for a search.
     1060         *
     1061         * @since 2.5.0
     1062         *
     1063         * @param string $link The search feed link.
     1064         * @param string $feed The feed type.
     1065         * @param string $type The search type. One of 'posts' or 'comments'.
     1066         */
    8331067        $link = apply_filters('search_feed_link', $link, $feed, 'comments');
    8341068
    8351069        return $link;
     
    8621096                $link = home_url( '?post_type=' . $post_type );
    8631097        }
    8641098
     1099        /**
     1100         * Filter the permalink for a post type archive.
     1101         *
     1102         * @since 3.1.0
     1103         *
     1104         * @param string $link      The post type archive permalink.
     1105         * @param string $post_type The post type name.
     1106         */
    8651107        return apply_filters( 'post_type_archive_link', $link, $post_type );
    8661108}
    8671109
     
    8921134                $link = add_query_arg( 'feed', $feed, $link );
    8931135        }
    8941136
     1137        /**
     1138         * Filter the feed link for a post type archive.
     1139         *
     1140         * @since 3.1.0
     1141         *
     1142         * @param string $link The post type archive feed link.
     1143         * @param string $feed The feed ty[e.
     1144         */
    8951145        return apply_filters( 'post_type_archive_feed_link', $link, $feed );
    8961146}
    8971147
     
    9251175        if ( !current_user_can( 'edit_post', $post->ID ) )
    9261176                return;
    9271177
     1178        /**
     1179         * Filter the edit link for a post.
     1180         *
     1181         * @since 2.3.0
     1182         *
     1183         * @param string $link    The edit link.
     1184         * @param int    $post_id The post ID.
     1185         * @param string $context The link context. If set to 'display' then ampersands are encoded.
     1186         */
    9281187        return apply_filters( 'get_edit_post_link', admin_url( sprintf($post_type_object->_edit_link . $action, $post->ID) ), $post->ID, $context );
    9291188}
    9301189
     
    9501209
    9511210        $post_type_obj = get_post_type_object( $post->post_type );
    9521211        $link = '<a class="post-edit-link" href="' . $url . '">' . $link . '</a>';
     1212        /**
     1213         * Filter the anchor tag for the edit link for a post.
     1214         *
     1215         * @since 2.3.0
     1216         *
     1217         * @param string $link    The anchor tag for the edit link.
     1218         * @param int    $post_id The post ID.
     1219         */
    9531220        echo $before . apply_filters( 'edit_post_link', $link, $post->ID ) . $after;
    9541221}
    9551222
     
    9831250
    9841251        $delete_link = add_query_arg( 'action', $action, admin_url( sprintf( $post_type_object->_edit_link, $post->ID ) ) );
    9851252
     1253        /**
     1254         * Filter the delete link for a post.
     1255         *
     1256         * @since 2.9.0
     1257         *
     1258         * @param string $link         The delete link.
     1259         * @param int    $post_id      The post ID.
     1260         * @param bool   $force_delete Whether to bypass trash and force deletion.
     1261         */
    9861262        return apply_filters( 'get_delete_post_link', wp_nonce_url( $delete_link, "$action-post_{$post->ID}" ), $post->ID, $force_delete );
    9871263}
    9881264
     
    10011277                return;
    10021278
    10031279        $location = admin_url('comment.php?action=editcomment&amp;c=') . $comment->comment_ID;
     1280        /**
     1281         * Filter the edit link for a comment.
     1282         *
     1283         * @since 2.3.0
     1284         *
     1285         * @param string $location The edit link.
     1286         */
    10041287        return apply_filters( 'get_edit_comment_link', $location );
    10051288}
    10061289
     
    10231306                $link = __('Edit This');
    10241307
    10251308        $link = '<a class="comment-edit-link" href="' . get_edit_comment_link( $comment->comment_ID ) . '">' . $link . '</a>';
     1309        /**
     1310         * Filter the anchor tag for the edit link for a comment.
     1311         *
     1312         * @since 2.3.0
     1313         *
     1314         * @param string $link       The anchor tag for the edit link.
     1315         * @param int    $comment_id The comment ID.
     1316         */
    10261317        echo $before . apply_filters( 'edit_comment_link', $link, $comment->comment_ID ) . $after;
    10271318}
    10281319
     
    10411332                return;
    10421333
    10431334        $location = admin_url('link.php?action=edit&amp;link_id=') . $link->link_id;
     1335        /**
     1336         * Filter the edit link for a bookmark (link).
     1337         *
     1338         * @since 2.3.0
     1339         *
     1340         * @param string $location The edit link.
     1341         * @param int    $link_id  The bookmark ID.
     1342         */
    10441343        return apply_filters( 'get_edit_bookmark_link', $location, $link->link_id );
    10451344}
    10461345
     
    10641363                $link = __('Edit This');
    10651364
    10661365        $link = '<a href="' . get_edit_bookmark_link( $bookmark ) . '">' . $link . '</a>';
     1366        /**
     1367         * Filter the anchor tag for the edit link for a bookmark.
     1368         *
     1369         * @since 2.3.0
     1370         *
     1371         * @param string $link    The anchor tag for the edit link.
     1372         * @param int    $link_id The bookmark ID.
     1373         */
    10671374        echo $before . apply_filters( 'edit_bookmark_link', $link, $bookmark->link_id ) . $after;
    10681375}
    10691376
     
    10921399        else
    10931400                $link = add_query_arg( 'user_id', $user->ID, self_admin_url( 'user-edit.php' ) );
    10941401
     1402        /**
     1403         * Filter the edit link for a user.
     1404         *
     1405         * @since 2.3.0
     1406         *
     1407         * @param string $link    The edit link.
     1408         * @param int    $user_id The user ID.
     1409         */
    10951410        return apply_filters( 'get_edit_user_link', $link, $user->ID );
    10961411}
    10971412
     
    11891504        $op = $previous ? '<' : '>';
    11901505        $order = $previous ? 'DESC' : 'ASC';
    11911506
     1507        /**
     1508         * Filter the JOIN clause in the SQL for an adjacent post query.
     1509         *
     1510         * Filter name can be `get_previous_post_join` or `get_next_post_join`.
     1511         *
     1512         * @since 2.1.0
     1513         *
     1514         * @param string $join           The JOIN clause in the SQL.
     1515         * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
     1516         * @param array  $excluded_terms Array of excluded term IDs.
     1517         */
    11921518        $join  = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_term, $excluded_terms );
     1519        /**
     1520         * Filter the WHERE clause in the SQL for an adjacent post query.
     1521         *
     1522         * Filter name can be `get_previous_post_where` or `get_next_post_where`.
     1523         *
     1524         * @since 2.1.0
     1525         *
     1526         * @param string $where          The WHERE clause in the SQL.
     1527         * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
     1528         * @param array  $excluded_terms Array of excluded term IDs.
     1529         */
    11931530        $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_terms_sql", $current_post_date, $post->post_type), $in_same_term, $excluded_terms );
     1531        /**
     1532         * Filter the ORDER BY clause in the SQL for an adjacent post query.
     1533         *
     1534         * Filter name can be `get_previous_post_sort` or `get_next_post_sort`.
     1535         *
     1536         * @since 2.1.0
     1537         *
     1538         * @param string $order_by The ORDER BY clause in the SQL.
     1539         */
    11941540        $sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
    11951541
    11961542        $query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort";
     
    12521598        $link .= "' href='" . get_permalink( $post ) . "' />\n";
    12531599
    12541600        $adjacent = $previous ? 'previous' : 'next';
     1601        /**
     1602         * Filter the adjacent post relational link.
     1603         *
     1604         * Filter name can be `previous_post_rel_link` or `next_post_rel_link`.
     1605         *
     1606         * @since 2.8.0
     1607         *
     1608         * @param string $link The relational link.
     1609         */
    12551610        return apply_filters( "{$adjacent}_post_rel_link", $link );
    12561611}
    12571612
     
    14771832
    14781833        $adjacent = $previous ? 'previous' : 'next';
    14791834
     1835        /**
     1836         * Filter the adjacent post link.
     1837         *
     1838         * Filter name can be `previous_post_link` or `next_post_link`.
     1839         *
     1840         * @since 2.8.0
     1841         *
     1842         * @param string  $output The adjacent post link.
     1843         * @param string  $format Link anchor format.
     1844         * @param string  $link   Link permalink format.
     1845         * @param WP_Post $post   The adjacent post.
     1846         */
    14801847        return apply_filters( "{$adjacent}_post_link", $output, $format, $link, $post );
    14811848}
    14821849
     
    15591926                $result = $base . $request . $query_string;
    15601927        }
    15611928
     1929        /**
     1930         * Filter the page number link for the current request.
     1931         *
     1932         * @since 2.5.0
     1933         *
     1934         * @param string $result The page number link.
     1935         */
    15621936        $result = apply_filters('get_pagenum_link', $result);
    15631937
    15641938        if ( $escape )
     
    16302004                $label = __( 'Next Page &raquo;' );
    16312005
    16322006        if ( !is_single() && ( $nextpage <= $max_page ) ) {
     2007                /**
     2008                 * Filter the attributes on the anchor tag for the next posts page link.
     2009                 *
     2010                 * @since 2.7.0
     2011                 *
     2012                 * @param string $attributes Attributes for the anchor tag.
     2013                 */
    16332014                $attr = apply_filters( 'next_posts_link_attributes', '' );
    16342015                return '<a href="' . next_posts( $max_page, false ) . "\" $attr>" . preg_replace('/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label) . '</a>';
    16352016        }
     
    17012082                $label = __( '&laquo; Previous Page' );
    17022083
    17032084        if ( !is_single() && $paged > 1 ) {
     2085                /**
     2086                 * Filter the attributes on the anchor tag for the previous posts page link.
     2087                 *
     2088                 * @since 2.7.0
     2089                 *
     2090                 * @param string $attributes Attributes for the anchor tag.
     2091                 */
    17042092                $attr = apply_filters( 'previous_posts_link_attributes', '' );
    17052093                return '<a href="' . previous_posts( false ) . "\" $attr>". preg_replace( '/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label ) .'</a>';
    17062094        }
     
    18022190
    18032191        $result .= '#comments';
    18042192
     2193        /**
     2194         * Filter the comments page number link for the current request.
     2195         *
     2196         * @since 2.7.0
     2197         *
     2198         * @param string $result The comments page number link.
     2199         */
    18052200        $result = apply_filters('get_comments_pagenum_link', $result);
    18062201
    18072202        return $result;
     
    18382233        if ( empty($label) )
    18392234                $label = __('Newer Comments &raquo;');
    18402235
     2236        /**
     2237         * Filter the attributes on the anchor tag for the next comments page link.
     2238         *
     2239         * @since 2.7.0
     2240         *
     2241         * @param string $attributes Attributes for the anchor tag.
     2242         */
    18412243        return '<a href="' . esc_url( get_comments_pagenum_link( $nextpage, $max_page ) ) . '" ' . apply_filters( 'next_comments_link_attributes', '' ) . '>'. preg_replace('/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label) .'</a>';
    18422244}
    18432245
     
    18752277        if ( empty($label) )
    18762278                $label = __('&laquo; Older Comments');
    18772279
     2280        /**
     2281         * Filter the attributes on the anchor tag for the previous comments page link.
     2282         *
     2283         * @since 2.7.0
     2284         *
     2285         * @param string $attributes Attributes for the anchor tag.
     2286         */
    18782287        return '<a href="' . esc_url( get_comments_pagenum_link( $prevpage ) ) . '" ' . apply_filters( 'previous_comments_link_attributes', '' ) . '>' . preg_replace('/&([^#])(?![a-z]{1,8};)/i', '&#038;$1', $label) .'</a>';
    18792288}
    18802289
     
    19562365
    19572366        $link = str_replace(array("\r", "\n", "\t"),  '', $link);
    19582367
     2368        /**
     2369         * Filter the Press This bookmarklet link
     2370         *
     2371         * @since 2.6.0
     2372         *
     2373         * @param string $link The Press This bookmarklet link.
     2374         */
    19592375        return apply_filters('shortcut_link', $link);
    19602376}
    19612377
     
    20142430
    20152431        if ( $path && is_string( $path ) )
    20162432                $url .= '/' . ltrim( $path, '/' );
    2017 
     2433        /**
     2434         * Filter the home URL.
     2435         *
     2436         * @since 3.0.0
     2437         *
     2438         * @param string      $url         The complete home URL including scheme and path.
     2439         * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
     2440         * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https', 'relative' or null.
     2441         * @param int|null    $blog_id     Blog ID, or null for the current blog.
     2442         */
    20182443        return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
    20192444}
    20202445
     
    20252450 * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
    20262451 * overridden.
    20272452 *
    2028  * @since 2.6.0
     2453 * @since 3.0.0
    20292454 *
    20302455 * @uses get_site_url()
    20312456 *
     
    20652490        if ( $path && is_string( $path ) )
    20662491                $url .= '/' . ltrim( $path, '/' );
    20672492
     2493        /**
     2494         * Filter the site URL.
     2495         *
     2496         * @since 3.0.0
     2497         *
     2498         * @param string      $url     The complete site URL including scheme and path.
     2499         * @param string      $path    Path relative to the site URL. Blank string if no path is specified.
     2500         * @param string|null $scheme  Scheme to give the site URL context. Accepts 'http', 'https', 'login',
     2501         *                             'login_post', 'admin', 'relative' or null.
     2502         * @param int|null    $blog_id Blog ID, or null for the current blog.
     2503         */
    20682504        return apply_filters( 'site_url', $url, $path, $scheme, $blog_id );
    20692505}
    20702506
     
    20972533        if ( $path && is_string( $path ) )
    20982534                $url .= ltrim( $path, '/' );
    20992535
     2536        /**
     2537         * Filter the admin area URL.
     2538         *
     2539         * @since 3.0.0
     2540         *
     2541         * @param string   $url     The complete admin area URL including scheme and path.
     2542         * @param string   $path    Path relative to the admin area URL. Blank string if no path is specified.
     2543         * @param int|null $blog_id Blog ID, or null for the current blog.
     2544         */
    21002545        return apply_filters( 'admin_url', $url, $path, $blog_id );
    21012546}
    21022547
     
    21152560        if ( $path && is_string( $path ) )
    21162561                $url .= ltrim($path, '/');
    21172562
     2563        /**
     2564         * Filter the URL to the wp-includes directory.
     2565         *
     2566         * @since 2.8.0
     2567         *
     2568         * @param string $url  The complete URL to the wp-includes directory including scheme and path.
     2569         * @param string $path Path relative to the URL to the wp-includes directory. Blank string if no path is specified.
     2570         */
    21182571        return apply_filters('includes_url', $url, $path);
    21192572}
    21202573
     
    21322585        if ( $path && is_string( $path ) )
    21332586                $url .= '/' . ltrim($path, '/');
    21342587
     2588        /**
     2589         * Filter the URL to the content directory.
     2590         *
     2591         * @since 2.8.0
     2592         *
     2593         * @param string $url  The complete URL to the content directory including scheme and path.
     2594         * @param string $path Path relative to the URL to the content directory. Blank string if no path is specified.
     2595         */
    21352596        return apply_filters('content_url', $url, $path);
    21362597}
    21372598
     
    21702631        if ( $path && is_string( $path ) )
    21712632                $url .= '/' . ltrim($path, '/');
    21722633
     2634        /**
     2635         * Filter the URL to the plugins directory.
     2636         *
     2637         * @since 2.8.0
     2638         *
     2639         * @param string $url    The complete URL to the plugins directory including scheme and path.
     2640         * @param string $path   Path relative to the URL to the plugins directory. Blank string if no path is specified.
     2641         * @param string $plugin The plugin file path to be relative to. Blank string if no plugin is specified.
     2642         */
    21732643        return apply_filters('plugins_url', $url, $path, $plugin);
    21742644}
    21752645
     
    22002670        if ( $path && is_string( $path ) )
    22012671                $url .= ltrim( $path, '/' );
    22022672
     2673        /**
     2674         * Filter the network site URL.
     2675         *
     2676         * @since 3.0.0
     2677         *
     2678         * @param string      $url    The complete network site URL including scheme and path.
     2679         * @param string      $path   Path relative to the network site URL. Blank string if no path is specified.
     2680         * @param string|null $scheme Scheme to give the URL context. Accepts 'http', 'https', 'relative' or null.
     2681         */
    22032682        return apply_filters( 'network_site_url', $url, $path, $scheme );
    22042683}
    22052684
     
    22342713        if ( $path && is_string( $path ) )
    22352714                $url .= ltrim( $path, '/' );
    22362715
     2716        /**
     2717         * Filter the network home URL.
     2718         *
     2719         * @since 3.0.0
     2720         *
     2721         * @param string      $url         The complete network home URL including scheme and path.
     2722         * @param string      $path        Path relative to the network home URL. Blank string if no path is specified.
     2723         * @param string|null $orig_scheme Scheme to give the URL context. Accepts 'http', 'https', 'relative' or null.
     2724         */
    22372725        return apply_filters( 'network_home_url', $url, $path, $orig_scheme);
    22382726}
    22392727
     
    22552743        if ( $path && is_string( $path ) )
    22562744                $url .= ltrim($path, '/');
    22572745
     2746        /**
     2747         * Filter the network admin URL.
     2748         *
     2749         * @since 3.0.0
     2750         *
     2751         * @param string $url  The complete network admin URL including scheme and path.
     2752         * @param string $path Path relative to the network admin URL. Blank string if no path is specified.
     2753         */
    22582754        return apply_filters('network_admin_url', $url, $path);
    22592755}
    22602756
     
    22732769        if ( $path && is_string( $path ) )
    22742770                $url .= ltrim($path, '/');
    22752771
     2772        /**
     2773         * Filter the user admin URL for the current user.
     2774         *
     2775         * @since 3.0.0
     2776         *
     2777         * @param string $url  The complete URL including scheme and path.
     2778         * @param string $path Path relative to the URL. Blank string if no path is specified.
     2779         */
    22762780        return apply_filters('user_admin_url', $url, $path);
    22772781}
    22782782
     
    23282832                $url = preg_replace( '#^\w+://#', $scheme . '://', $url );
    23292833        }
    23302834
     2835        /**
     2836         * Filter the resulting URL after setting the scheme.
     2837         *
     2838         * @since 3.4.0
     2839         *
     2840         * @param string $url         The complete URL including scheme and path.
     2841         * @param string $scheme      Scheme applied to the URL. One of 'http', 'https', or 'relative'.
     2842         * @param string $orig_scheme Scheme requested for the URL. One of 'http', 'https', 'login', 'login_post', 'admin', 'rpc', or 'relative'.
     2843         */
    23312844        return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
    23322845}
    23332846
     
    23662879                }
    23672880        }
    23682881
     2882        /**
     2883         * Filter the dashboard URL for a user.
     2884         *
     2885         * @since 3.1.0
     2886         *
     2887         * @param string $url     The complete URL including scheme and path.
     2888         * @param int    $user_id The user ID.
     2889         * @param string $path    Path relative to the URL. Blank string if no path is specified.
     2890         * @param string $scheme  Scheme to give the URL context. Accepts 'http', 'https', 'login',
     2891         *                        'login_post', 'admin', 'relative' or null.
     2892         */
    23692893        return apply_filters( 'user_dashboard_url', $url, $user_id, $path, $scheme);
    23702894}
    23712895
     
    23892913        else
    23902914                $url = get_dashboard_url( $user_id, 'profile.php', $scheme );
    23912915
     2916        /**
     2917         * Filter the URL for a user's profile editor.
     2918         *
     2919         * @since 3.1.0
     2920         *
     2921         * @param string $url     The complete URL including scheme and path.
     2922         * @param int    $user_id The user ID.
     2923         * @param string $scheme  Scheme to give the URL context. Accepts 'http', 'https', 'login',
     2924         *                        'login_post', 'admin', 'relative' or null.
     2925         */
    23922926        return apply_filters( 'edit_profile_url', $url, $user_id, $scheme);
    23932927}
    23942928
     
    24292963 * @return string A shortlink or an empty string if no shortlink exists for the requested resource or if shortlinks are not enabled.
    24302964 */
    24312965function wp_get_shortlink($id = 0, $context = 'post', $allow_slugs = true) {
    2432         // Allow plugins to short-circuit this function.
     2966        /**
     2967         * Short-circuit the generation of a shortlink for a post.
     2968         *
     2969         * @since 3.0.0
     2970         *
     2971         * @param bool|string $return      The short-circuit return value. Either false or a URL string.
     2972         * @param int         $id          The post ID, or 0 for the current post.
     2973         * @param string      $context     The context for the link. One of 'post' or 'query',
     2974         * @param bool        $allow_slugs Whether to allow post slugs in the shortlink.
     2975         */
    24332976        $shortlink = apply_filters('pre_get_shortlink', false, $id, $context, $allow_slugs);
    24342977        if ( false !== $shortlink )
    24352978                return $shortlink;
     
    24583001                }
    24593002        }
    24603003
     3004        /**
     3005         * Filter the shortlink for a post.
     3006         *
     3007         * @since 3.0.0
     3008         *
     3009         * @param string $shortlink   The shortlink URL.
     3010         * @param int    $id          The post ID, or 0 for the current post.
     3011         * @param string $context     The context for the link. One of 'post' or 'query',
     3012         * @param bool   $allow_slugs Whether to allow post slugs in the shortlink. Not used by default.
     3013         */
    24613014        return apply_filters('get_shortlink', $shortlink, $id, $context, $allow_slugs);
    24623015}
    24633016
     
    25273080
    25283081        if ( !empty( $shortlink ) ) {
    25293082                $link = '<a rel="shortlink" href="' . esc_url( $shortlink ) . '" title="' . $title . '">' . $text . '</a>';
     3083                /**
     3084                 * Filter the anchor tag for the shortlink to a post.
     3085                 *
     3086                 * @since 3.0.0
     3087                 *
     3088                 * @param string $link      The shortlink anchor tag.
     3089                 * @param string $shortlink The shortlink URL.
     3090                 * @param string $text      The shortlink's text.
     3091                 * @param string $title     The shortlink's title attribute.
     3092                 */
    25303093                $link = apply_filters( 'the_shortlink', $link, $shortlink, $text, $title );
    25313094                echo $before, $link, $after;
    25323095        }