Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
blog
/
wp-includes
/
Requests
/
src
/
Transport
:
comment-template-20241222130950.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Comment template functions * * These functions are meant to live inside of the WordPress loop. * * @package WordPress * @subpackage Template */ /** * Retrieves the author of the current comment. * * If the comment has an empty comment_author field, then 'Anonymous' person is * assumed. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to retrieve the author. * Default current comment. * @return string The comment author */ function get_comment_author( $comment_id = 0 ) { $comment = get_comment( $comment_id ); if ( ! empty( $comment->comment_ID ) ) { $comment_id = $comment->comment_ID; } elseif ( is_scalar( $comment_id ) ) { $comment_id = (string) $comment_id; } else { $comment_id = '0'; } if ( empty( $comment->comment_author ) ) { $user = ! empty( $comment->user_id ) ? get_userdata( $comment->user_id ) : false; if ( $user ) { $comment_author = $user->display_name; } else { $comment_author = __( 'Anonymous' ); } } else { $comment_author = $comment->comment_author; } /** * Filters the returned comment author name. * * @since 1.5.0 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. * * @param string $comment_author The comment author's username. * @param string $comment_id The comment ID as a numeric string. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author', $comment_author, $comment_id, $comment ); } /** * Displays the author of the current comment. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author. * Default current comment. */ function comment_author( $comment_id = 0 ) { $comment = get_comment( $comment_id ); $comment_author = get_comment_author( $comment ); /** * Filters the comment author's name for display. * * @since 1.2.0 * @since 4.1.0 The `$comment_id` parameter was added. * * @param string $comment_author The comment author's username. * @param string $comment_id The comment ID as a numeric string. */ echo apply_filters( 'comment_author', $comment_author, $comment->comment_ID ); } /** * Retrieves the email of the author of the current comment. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's email. * Default current comment. * @return string The current comment author's email */ function get_comment_author_email( $comment_id = 0 ) { $comment = get_comment( $comment_id ); /** * Filters the comment author's returned email address. * * @since 1.5.0 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. * * @param string $comment_author_email The comment author's email address. * @param string $comment_id The comment ID as a numeric string. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author_email', $comment->comment_author_email, $comment->comment_ID, $comment ); } /** * Displays the email of the author of the current global $comment. * * Care should be taken to protect the email address and assure that email * harvesters do not capture your commenter's email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's email. * Default current comment. */ function comment_author_email( $comment_id = 0 ) { $comment = get_comment( $comment_id ); $comment_author_email = get_comment_author_email( $comment ); /** * Filters the comment author's email for display. * * @since 1.2.0 * @since 4.1.0 The `$comment_id` parameter was added. * * @param string $comment_author_email The comment author's email address. * @param string $comment_id The comment ID as a numeric string. */ echo apply_filters( 'author_email', $comment_author_email, $comment->comment_ID ); } /** * Displays the HTML email link to the author of the current comment. * * Care should be taken to protect the email address and assure that email * harvesters do not capture your commenter's email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * * @since 0.71 * @since 4.6.0 Added the `$comment` parameter. * * @param string $link_text Optional. Text to display instead of the comment author's email address. * Default empty. * @param string $before Optional. Text or HTML to display before the email link. Default empty. * @param string $after Optional. Text or HTML to display after the email link. Default empty. * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. Default is the current comment. */ function comment_author_email_link( $link_text = '', $before = '', $after = '', $comment = null ) { $link = get_comment_author_email_link( $link_text, $before, $after, $comment ); if ( $link ) { echo $link; } } /** * Returns the HTML email link to the author of the current comment. * * Care should be taken to protect the email address and assure that email * harvesters do not capture your commenter's email address. Most assume that * their email address will not appear in raw form on the site. Doing so will * enable anyone, including those that people don't want to get the email * address and use it for their own means good and bad. * * @since 2.7.0 * @since 4.6.0 Added the `$comment` parameter. * * @param string $link_text Optional. Text to display instead of the comment author's email address. * Default empty. * @param string $before Optional. Text or HTML to display before the email link. Default empty. * @param string $after Optional. Text or HTML to display after the email link. Default empty. * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. Default is the current comment. * @return string HTML markup for the comment author email link. By default, the email address is obfuscated * via the {@see 'comment_email'} filter with antispambot(). */ function get_comment_author_email_link( $link_text = '', $before = '', $after = '', $comment = null ) { $comment = get_comment( $comment ); /** * Filters the comment author's email for display. * * Care should be taken to protect the email address and assure that email * harvesters do not capture your commenter's email address. * * @since 1.2.0 * @since 4.1.0 The `$comment` parameter was added. * * @param string $comment_author_email The comment author's email address. * @param WP_Comment $comment The comment object. */ $comment_author_email = apply_filters( 'comment_email', $comment->comment_author_email, $comment ); if ( ( ! empty( $comment_author_email ) ) && ( '@' !== $comment_author_email ) ) { $display = ( '' !== $link_text ) ? $link_text : $comment_author_email; $comment_author_email_link = $before . sprintf( '<a href="%1$s">%2$s</a>', esc_url( 'mailto:' . $comment_author_email ), esc_html( $display ) ) . $after; return $comment_author_email_link; } else { return ''; } } /** * Retrieves the HTML link to the URL of the author of the current comment. * * Both get_comment_author_url() and get_comment_author() rely on get_comment(), * which falls back to the global comment variable if the $comment_id argument is empty. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's link. * Default current comment. * @return string The comment author name or HTML link for author's URL. */ function get_comment_author_link( $comment_id = 0 ) { $comment = get_comment( $comment_id ); if ( ! empty( $comment->comment_ID ) ) { $comment_id = $comment->comment_ID; } elseif ( is_scalar( $comment_id ) ) { $comment_id = (string) $comment_id; } else { $comment_id = '0'; } $comment_author_url = get_comment_author_url( $comment ); $comment_author = get_comment_author( $comment ); if ( empty( $comment_author_url ) || 'http://' === $comment_author_url ) { $comment_author_link = $comment_author; } else { $rel_parts = array( 'ugc' ); if ( ! wp_is_internal_link( $comment_author_url ) ) { $rel_parts = array_merge( $rel_parts, array( 'external', 'nofollow' ) ); } /** * Filters the rel attributes of the comment author's link. * * @since 6.2.0 * * @param string[] $rel_parts An array of strings representing the rel tags * which will be joined into the anchor's rel attribute. * @param WP_Comment $comment The comment object. */ $rel_parts = apply_filters( 'comment_author_link_rel', $rel_parts, $comment ); $rel = implode( ' ', $rel_parts ); $rel = esc_attr( $rel ); // Empty space before 'rel' is necessary for later sprintf(). $rel = ! empty( $rel ) ? sprintf( ' rel="%s"', $rel ) : ''; $comment_author_link = sprintf( '<a href="%1$s" class="url"%2$s>%3$s</a>', $comment_author_url, $rel, $comment_author ); } /** * Filters the comment author's link for display. * * @since 1.5.0 * @since 4.1.0 The `$comment_author` and `$comment_id` parameters were added. * * @param string $comment_author_link The HTML-formatted comment author link. * Empty for an invalid URL. * @param string $comment_author The comment author's username. * @param string $comment_id The comment ID as a numeric string. */ return apply_filters( 'get_comment_author_link', $comment_author_link, $comment_author, $comment_id ); } /** * Displays the HTML link to the URL of the author of the current comment. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's link. * Default current comment. */ function comment_author_link( $comment_id = 0 ) { echo get_comment_author_link( $comment_id ); } /** * Retrieves the IP address of the author of the current comment. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's IP address. * Default current comment. * @return string Comment author's IP address, or an empty string if it's not available. */ function get_comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid $comment = get_comment( $comment_id ); /** * Filters the comment author's returned IP address. * * @since 1.5.0 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. * * @param string $comment_author_ip The comment author's IP address, or an empty string if it's not available. * @param string $comment_id The comment ID as a numeric string. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_author_IP', $comment->comment_author_IP, $comment->comment_ID, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase } /** * Displays the IP address of the author of the current comment. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's IP address. * Default current comment. */ function comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid echo esc_html( get_comment_author_IP( $comment_id ) ); } /** * Retrieves the URL of the author of the current comment, not linked. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's URL. * Default current comment. * @return string Comment author URL, if provided, an empty string otherwise. */ function get_comment_author_url( $comment_id = 0 ) { $comment = get_comment( $comment_id ); $comment_author_url = ''; $comment_id = 0; if ( ! empty( $comment ) ) { $comment_author_url = ( 'http://' === $comment->comment_author_url ) ? '' : $comment->comment_author_url; $comment_author_url = esc_url( $comment_author_url, array( 'http', 'https' ) ); $comment_id = $comment->comment_ID; } /** * Filters the comment author's URL. * * @since 1.5.0 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. * * @param string $comment_author_url The comment author's URL, or an empty string. * @param string|int $comment_id The comment ID as a numeric string, or 0 if not found. * @param WP_Comment|null $comment The comment object, or null if not found. */ return apply_filters( 'get_comment_author_url', $comment_author_url, $comment_id, $comment ); } /** * Displays the URL of the author of the current comment, not linked. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's URL. * Default current comment. */ function comment_author_url( $comment_id = 0 ) { $comment = get_comment( $comment_id ); $comment_author_url = get_comment_author_url( $comment ); /** * Filters the comment author's URL for display. * * @since 1.2.0 * @since 4.1.0 The `$comment_id` parameter was added. * * @param string $comment_author_url The comment author's URL. * @param string $comment_id The comment ID as a numeric string. */ echo apply_filters( 'comment_url', $comment_author_url, $comment->comment_ID ); } /** * Retrieves the HTML link of the URL of the author of the current comment. * * $link_text parameter is only used if the URL does not exist for the comment * author. If the URL does exist then the URL will be used and the $link_text * will be ignored. * * Encapsulate the HTML link between the $before and $after. So it will appear * in the order of $before, link, and finally $after. * * @since 1.5.0 * @since 4.6.0 Added the `$comment` parameter. * * @param string $link_text Optional. The text to display instead of the comment * author's email address. Default empty. * @param string $before Optional. The text or HTML to display before the email link. * Default empty. * @param string $after Optional. The text or HTML to display after the email link. * Default empty. * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. * Default is the current comment. * @return string The HTML link between the $before and $after parameters. */ function get_comment_author_url_link( $link_text = '', $before = '', $after = '', $comment = 0 ) { $comment_author_url = get_comment_author_url( $comment ); $display = ( '' !== $link_text ) ? $link_text : $comment_author_url; $display = str_replace( 'http://www.', '', $display ); $display = str_replace( 'http://', '', $display ); if ( str_ends_with( $display, '/' ) ) { $display = substr( $display, 0, -1 ); } $comment_author_url_link = $before . sprintf( '<a href="%1$s" rel="external">%2$s</a>', $comment_author_url, $display ) . $after; /** * Filters the comment author's returned URL link. * * @since 1.5.0 * * @param string $comment_author_url_link The HTML-formatted comment author URL link. */ return apply_filters( 'get_comment_author_url_link', $comment_author_url_link ); } /** * Displays the HTML link of the URL of the author of the current comment. * * @since 0.71 * @since 4.6.0 Added the `$comment` parameter. * * @param string $link_text Optional. Text to display instead of the comment author's * email address. Default empty. * @param string $before Optional. Text or HTML to display before the email link. * Default empty. * @param string $after Optional. Text or HTML to display after the email link. * Default empty. * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. * Default is the current comment. */ function comment_author_url_link( $link_text = '', $before = '', $after = '', $comment = 0 ) { echo get_comment_author_url_link( $link_text, $before, $after, $comment ); } /** * Generates semantic classes for each comment element. * * @since 2.7.0 * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. * * @param string|string[] $css_class Optional. One or more classes to add to the class list. * Default empty. * @param int|WP_Comment $comment Optional. Comment ID or WP_Comment object. Default current comment. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. * @param bool $display Optional. Whether to print or return the output. * Default true. * @return void|string Void if `$display` argument is true, comment classes if `$display` is false. */ function comment_class( $css_class = '', $comment = null, $post = null, $display = true ) { // Separates classes with a single space, collates classes for comment DIV. $css_class = 'class="' . implode( ' ', get_comment_class( $css_class, $comment, $post ) ) . '"'; if ( $display ) { echo $css_class; } else { return $css_class; } } /** * Returns the classes for the comment div as an array. * * @since 2.7.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @global int $comment_alt * @global int $comment_depth * @global int $comment_thread_alt * * @param string|string[] $css_class Optional. One or more classes to add to the class list. * Default empty. * @param int|WP_Comment $comment_id Optional. Comment ID or WP_Comment object. Default current comment. * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post. * @return string[] An array of classes. */ function get_comment_class( $css_class = '', $comment_id = null, $post = null ) { global $comment_alt, $comment_depth, $comment_thread_alt; $classes = array(); $comment = get_comment( $comment_id ); if ( ! $comment ) { return $classes; } // Get the comment type (comment, trackback). $classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type; // Add classes for comment authors that are registered users. $user = $comment->user_id ? get_userdata( $comment->user_id ) : false; if ( $user ) { $classes[] = 'byuser'; $classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id ); // For comment authors who are the author of the post. $_post = get_post( $post ); if ( $_post ) { if ( $comment->user_id === $_post->post_author ) { $classes[] = 'bypostauthor'; } } } if ( empty( $comment_alt ) ) { $comment_alt = 0; } if ( empty( $comment_depth ) ) { $comment_depth = 1; } if ( empty( $comment_thread_alt ) ) { $comment_thread_alt = 0; } if ( $comment_alt % 2 ) { $classes[] = 'odd'; $classes[] = 'alt'; } else { $classes[] = 'even'; } ++$comment_alt; // Alt for top-level comments. if ( 1 === $comment_depth ) { if ( $comment_thread_alt % 2 ) { $classes[] = 'thread-odd'; $classes[] = 'thread-alt'; } else { $classes[] = 'thread-even'; } ++$comment_thread_alt; } $classes[] = "depth-$comment_depth"; if ( ! empty( $css_class ) ) { if ( ! is_array( $css_class ) ) { $css_class = preg_split( '#\s+#', $css_class ); } $classes = array_merge( $classes, $css_class ); } $classes = array_map( 'esc_attr', $classes ); /** * Filters the returned CSS classes for the current comment. * * @since 2.7.0 * * @param string[] $classes An array of comment classes. * @param string[] $css_class An array of additional classes added to the list. * @param string $comment_id The comment ID as a numeric string. * @param WP_Comment $comment The comment object. * @param int|WP_Post $post The post ID or WP_Post object. */ return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post ); } /** * Retrieves the comment date of the current comment. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param string $format Optional. PHP date format. Defaults to the 'date_format' option. * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the date. * Default current comment. * @return string The comment's date. */ function get_comment_date( $format = '', $comment_id = 0 ) { $comment = get_comment( $comment_id ); $_format = ! empty( $format ) ? $format : get_option( 'date_format' ); $comment_date = mysql2date( $_format, $comment->comment_date ); /** * Filters the returned comment date. * * @since 1.5.0 * * @param string|int $comment_date Formatted date string or Unix timestamp. * @param string $format PHP date format. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_date', $comment_date, $format, $comment ); } /** * Displays the comment date of the current comment. * * @since 0.71 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param string $format Optional. PHP date format. Defaults to the 'date_format' option. * @param int|WP_Comment $comment_id WP_Comment or ID of the comment for which to print the date. * Default current comment. */ function comment_date( $format = '', $comment_id = 0 ) { echo get_comment_date( $format, $comment_id ); } /** * Retrieves the excerpt of the given comment. * * Returns a maximum of 20 words with an ellipsis appended if necessary. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the excerpt. * Default current comment. * @return string The possibly truncated comment excerpt. */ function get_comment_excerpt( $comment_id = 0 ) { $comment = get_comment( $comment_id ); if ( ! post_password_required( $comment->comment_post_ID ) ) { $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) ); } else { $comment_text = __( 'Password protected' ); } /* translators: Maximum number of words used in a comment excerpt. */ $comment_excerpt_length = (int) _x( '20', 'comment_excerpt_length' ); /** * Filters the maximum number of words used in the comment excerpt. * * @since 4.4.0 * * @param int $comment_excerpt_length The amount of words you want to display in the comment excerpt. */ $comment_excerpt_length = apply_filters( 'comment_excerpt_length', $comment_excerpt_length ); $comment_excerpt = wp_trim_words( $comment_text, $comment_excerpt_length, '…' ); /** * Filters the retrieved comment excerpt. * * @since 1.5.0 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added. * * @param string $comment_excerpt The comment excerpt text. * @param string $comment_id The comment ID as a numeric string. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_excerpt', $comment_excerpt, $comment->comment_ID, $comment ); } /** * Displays the excerpt of the current comment. * * @since 1.2.0 * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object. * * @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the excerpt. * Default current comment. */ function comment_excerpt( $comment_id = 0 ) { $comment = get_comment( $comment_id ); $comment_excerpt = get_comment_excerpt( $comment ); /** * Filters the comment excerpt for display. * * @since 1.2.0 * @since 4.1.0 The `$comment_id` parameter was added. * * @param string $comment_excerpt The comment excerpt text. * @param string $comment_id The comment ID as a numeric string. */ echo apply_filters( 'comment_excerpt', $comment_excerpt, $comment->comment_ID ); } /** * Retrieves the comment ID of the current comment. * * @since 1.5.0 * * @return string The comment ID as a numeric string. */ function get_comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid $comment = get_comment(); $comment_id = ! empty( $comment->comment_ID ) ? $comment->comment_ID : '0'; /** * Filters the returned comment ID. * * @since 1.5.0 * @since 4.1.0 The `$comment` parameter was added. * * @param string $comment_id The current comment ID as a numeric string. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_ID', $comment_id, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase } /** * Displays the comment ID of the current comment. * * @since 0.71 */ function comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid echo get_comment_ID(); } /** * Retrieves the link to a given comment. * * @since 1.5.0 * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. Added `$cpage` argument. * * @see get_page_of_comment() * * @global WP_Rewrite $wp_rewrite WordPress rewrite component. * @global bool $in_comment_loop * * @param WP_Comment|int|null $comment Optional. Comment to retrieve. Default current comment. * @param array $args { * An array of optional arguments to override the defaults. * * @type string $type Passed to get_page_of_comment(). * @type int $page Current page of comments, for calculating comment pagination. * @type int $per_page Per-page value for comment pagination. * @type int $max_depth Passed to get_page_of_comment(). * @type int|string $cpage Value to use for the comment's "comment-page" or "cpage" value. * If provided, this value overrides any value calculated from `$page` * and `$per_page`. * } * @return string The permalink to the given comment. */ function get_comment_link( $comment = null, $args = array() ) { global $wp_rewrite, $in_comment_loop; $comment = get_comment( $comment ); // Back-compat. if ( ! is_array( $args ) ) { $args = array( 'page' => $args ); } $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '', 'cpage' => null, ); $args = wp_parse_args( $args, $defaults ); $comment_link = get_permalink( $comment->comment_post_ID ); // The 'cpage' param takes precedence. if ( ! is_null( $args['cpage'] ) ) { $cpage = $args['cpage']; // No 'cpage' is provided, so we calculate one. } else { if ( '' === $args['per_page'] && get_option( 'page_comments' ) ) { $args['per_page'] = get_option( 'comments_per_page' ); } if ( empty( $args['per_page'] ) ) { $args['per_page'] = 0; $args['page'] = 0; } $cpage = $args['page']; if ( '' === $cpage ) { if ( ! empty( $in_comment_loop ) ) { $cpage = (int) get_query_var( 'cpage' ); } else { // Requires a database hit, so we only do it when we can't figure out from context. $cpage = get_page_of_comment( $comment->comment_ID, $args ); } } /* * If the default page displays the oldest comments, the permalinks for comments on the default page * do not need a 'cpage' query var. */ if ( 'oldest' === get_option( 'default_comments_page' ) && 1 === $cpage ) { $cpage = ''; } } if ( $cpage && get_option( 'page_comments' ) ) { if ( $wp_rewrite->using_permalinks() ) { if ( $cpage ) { $comment_link = trailingslashit( $comment_link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage; } $comment_link = user_trailingslashit( $comment_link, 'comment' ); } elseif ( $cpage ) { $comment_link = add_query_arg( 'cpage', $cpage, $comment_link ); } } if ( $wp_rewrite->using_permalinks() ) { $comment_link = user_trailingslashit( $comment_link, 'comment' ); } $comment_link = $comment_link . '#comment-' . $comment->comment_ID; /** * Filters the returned single comment permalink. * * @since 2.8.0 * @since 4.4.0 Added the `$cpage` parameter. * * @see get_page_of_comment() * * @param string $comment_link The comment permalink with '#comment-$id' appended. * @param WP_Comment $comment The current comment object. * @param array $args An array of arguments to override the defaults. * @param int $cpage The calculated 'cpage' value. */ return apply_filters( 'get_comment_link', $comment_link, $comment, $args, $cpage ); } /** * Retrieves the link to the current post comments. * * @since 1.5.0 * * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. * @return string The link to the comments. */ function get_comments_link( $post = 0 ) { $hash = get_comments_number( $post ) ? '#comments' : '#respond'; $comments_link = get_permalink( $post ) . $hash; /** * Filters the returned post comments permalink. * * @since 3.6.0 * * @param string $comments_link Post comments permalink with '#comments' appended. * @param int|WP_Post $post Post ID or WP_Post object. */ return apply_filters( 'get_comments_link', $comments_link, $post ); } /** * Displays the link to the current post comments. * * @since 0.71 * * @param string $deprecated Not Used. * @param string $deprecated_2 Not Used. */ function comments_link( $deprecated = '', $deprecated_2 = '' ) { if ( ! empty( $deprecated ) ) { _deprecated_argument( __FUNCTION__, '0.72' ); } if ( ! empty( $deprecated_2 ) ) { _deprecated_argument( __FUNCTION__, '1.3.0' ); } echo esc_url( get_comments_link() ); } /** * Retrieves the amount of comments a post has. * * @since 1.5.0 * * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`. * @return string|int If the post exists, a numeric string representing the number of comments * the post has, otherwise 0. */ function get_comments_number( $post = 0 ) { $post = get_post( $post ); $comments_number = $post ? $post->comment_count : 0; $post_id