diff -r c7c34916027a -r 177826044cd9 wp/wp-includes/comment-template.php --- a/wp/wp-includes/comment-template.php Mon Oct 14 18:06:33 2019 +0200 +++ b/wp/wp-includes/comment-template.php Mon Oct 14 18:28:13 2019 +0200 @@ -18,17 +18,18 @@ * @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. + * Default current comment. * @return string The comment author */ function get_comment_author( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); if ( empty( $comment->comment_author ) ) { - if ( $comment->user_id && $user = get_userdata( $comment->user_id ) ) + if ( $comment->user_id && $user = get_userdata( $comment->user_id ) ) { $author = $user->display_name; - else - $author = __('Anonymous'); + } else { + $author = __( 'Anonymous' ); + } } else { $author = $comment->comment_author; } @@ -53,7 +54,7 @@ * @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. + * Default current comment. */ function comment_author( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); @@ -78,7 +79,7 @@ * @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. + * Default current comment. * @return string The current comment author's email */ function get_comment_author_email( $comment_ID = 0 ) { @@ -101,7 +102,7 @@ * Display 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 commentors' email address. Most assume that + * 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. @@ -110,7 +111,7 @@ * @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. + * Default current comment. */ function comment_author_email( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); @@ -132,7 +133,7 @@ * Display 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 commentors' email address. Most assume that + * 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. @@ -156,7 +157,7 @@ * Return 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 commentors' email address. Most assume that + * 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. @@ -189,11 +190,11 @@ */ $email = apply_filters( 'comment_email', $comment->comment_author_email, $comment ); - if ((!empty($email)) && ($email != '@')) { - $display = ($linktext != '') ? $linktext : $email; + if ( ( ! empty( $email ) ) && ( $email != '@' ) ) { + $display = ( $linktext != '' ) ? $linktext : $email; $return = $before; $return .= sprintf( '%2$s', esc_url( 'mailto:' . $email ), esc_html( $display ) ); - $return .= $after; + $return .= $after; return $return; } else { return ''; @@ -210,7 +211,7 @@ * @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. + * Default current comment. * @return string The comment author name or HTML link for author's URL. */ function get_comment_author_link( $comment_ID = 0 ) { @@ -218,10 +219,11 @@ $url = get_comment_author_url( $comment ); $author = get_comment_author( $comment ); - if ( empty( $url ) || 'http://' == $url ) + if ( empty( $url ) || 'http://' == $url ) { $return = $author; - else + } else { $return = "$author"; + } /** * Filters the comment author's link for display. @@ -244,7 +246,7 @@ * @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. + * Default current comment. */ function comment_author_link( $comment_ID = 0 ) { echo get_comment_author_link( $comment_ID ); @@ -257,7 +259,7 @@ * @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. + * Default current comment. * @return string Comment author's IP address. */ function get_comment_author_IP( $comment_ID = 0 ) { @@ -283,7 +285,7 @@ * @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. + * Default current comment. */ function comment_author_IP( $comment_ID = 0 ) { echo esc_html( get_comment_author_IP( $comment_ID ) ); @@ -296,17 +298,17 @@ * @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. + * Default current comment. * @return string Comment author URL. */ function get_comment_author_url( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); - $url = ''; - $id = 0; + $url = ''; + $id = 0; if ( ! empty( $comment ) ) { $author_url = ( 'http://' == $comment->comment_author_url ) ? '' : $comment->comment_author_url; - $url = esc_url( $author_url, array( 'http', 'https' ) ); - $id = $comment->comment_ID; + $url = esc_url( $author_url, array( 'http', 'https' ) ); + $id = $comment->comment_ID; } /** @@ -329,7 +331,7 @@ * @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. + * Default current comment. */ function comment_author_url( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); @@ -371,13 +373,13 @@ * @return string The HTML link between the $before and $after parameters. */ function get_comment_author_url_link( $linktext = '', $before = '', $after = '', $comment = 0 ) { - $url = get_comment_author_url( $comment ); - $display = ($linktext != '') ? $linktext : $url; + $url = get_comment_author_url( $comment ); + $display = ( $linktext != '' ) ? $linktext : $url; $display = str_replace( 'http://www.', '', $display ); $display = str_replace( 'http://', '', $display ); - if ( '/' == substr($display, -1) ) { - $display = substr($display, 0, -1); + if ( '/' == substr( $display, -1 ) ) { + $display = substr( $display, 0, -1 ); } $return = "$before$display$after"; @@ -428,10 +430,11 @@ function comment_class( $class = '', $comment = null, $post_id = null, $echo = true ) { // Separates classes with a single space, collates classes for comment DIV $class = 'class="' . join( ' ', get_comment_class( $class, $comment, $post_id ) ) . '"'; - if ( $echo) + if ( $echo ) { echo $class; - else + } else { return $class; + } } /** @@ -467,19 +470,22 @@ $classes[] = 'byuser'; $classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id ); // For comment authors who are the author of the post - if ( $post = get_post($post_id) ) { + if ( $post = get_post( $post_id ) ) { if ( $comment->user_id === $post->post_author ) { $classes[] = 'bypostauthor'; } } } - if ( empty($comment_alt) ) + if ( empty( $comment_alt ) ) { $comment_alt = 0; - if ( empty($comment_depth) ) + } + if ( empty( $comment_depth ) ) { $comment_depth = 1; - if ( empty($comment_thread_alt) ) + } + if ( empty( $comment_thread_alt ) ) { $comment_thread_alt = 0; + } if ( $comment_alt % 2 ) { $classes[] = 'odd'; @@ -503,20 +509,21 @@ $classes[] = "depth-$comment_depth"; - if ( !empty($class) ) { - if ( !is_array( $class ) ) - $class = preg_split('#\s+#', $class); - $classes = array_merge($classes, $class); + if ( ! empty( $class ) ) { + if ( ! is_array( $class ) ) { + $class = preg_split( '#\s+#', $class ); + } + $classes = array_merge( $classes, $class ); } - $classes = array_map('esc_attr', $classes); + $classes = array_map( 'esc_attr', $classes ); /** * Filters the returned CSS classes for the current comment. * * @since 2.7.0 * - * @param array $classes An array of comment classes. + * @param string[] $classes An array of comment classes. * @param string $class A comma-separated list of additional classes added to the list. * @param int $comment_id The comment id. * @param WP_Comment $comment The comment object. @@ -538,10 +545,11 @@ */ function get_comment_date( $d = '', $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); - if ( '' == $d ) - $date = mysql2date(get_option('date_format'), $comment->comment_date); - else - $date = mysql2date($d, $comment->comment_date); + if ( '' == $d ) { + $date = mysql2date( get_option( 'date_format' ), $comment->comment_date ); + } else { + $date = mysql2date( $d, $comment->comment_date ); + } /** * Filters the returned comment date. * @@ -583,9 +591,9 @@ * @return string The maybe truncated comment with 20 words or less. */ function get_comment_excerpt( $comment_ID = 0 ) { - $comment = get_comment( $comment_ID ); + $comment = get_comment( $comment_ID ); $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) ); - $words = explode( ' ', $comment_text ); + $words = explode( ' ', $comment_text ); /** * Filters the amount of words used in the comment excerpt. @@ -702,7 +710,7 @@ function get_comment_link( $comment = null, $args = array() ) { global $wp_rewrite, $in_comment_loop; - $comment = get_comment($comment); + $comment = get_comment( $comment ); // Back-compat. if ( ! is_array( $args ) ) { @@ -716,7 +724,7 @@ 'max_depth' => '', 'cpage' => null, ); - $args = wp_parse_args( $args, $defaults ); + $args = wp_parse_args( $args, $defaults ); $link = get_permalink( $comment->comment_post_ID ); @@ -724,15 +732,15 @@ if ( ! is_null( $args['cpage'] ) ) { $cpage = $args['cpage']; - // No 'cpage' is provided, so we calculate one. + // 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'); + $args['per_page'] = get_option( 'comments_per_page' ); } if ( empty( $args['per_page'] ) ) { $args['per_page'] = 0; - $args['page'] = 0; + $args['page'] = 0; } $cpage = $args['page']; @@ -765,7 +773,6 @@ } elseif ( $cpage ) { $link = add_query_arg( 'cpage', $cpage, $link ); } - } if ( $wp_rewrite->using_permalinks() ) { @@ -799,7 +806,7 @@ * @return string The link to the comments. */ function get_comments_link( $post_id = 0 ) { - $hash = get_comments_number( $post_id ) ? '#comments' : '#respond'; + $hash = get_comments_number( $post_id ) ? '#comments' : '#respond'; $comments_link = get_permalink( $post_id ) . $hash; /** @@ -822,10 +829,12 @@ * @param string $deprecated_2 Not Used. */ function comments_link( $deprecated = '', $deprecated_2 = '' ) { - if ( !empty( $deprecated ) ) + if ( ! empty( $deprecated ) ) { _deprecated_argument( __FUNCTION__, '0.72' ); - if ( !empty( $deprecated_2 ) ) + } + if ( ! empty( $deprecated_2 ) ) { _deprecated_argument( __FUNCTION__, '1.3.0' ); + } echo esc_url( get_comments_link() ); } @@ -844,7 +853,7 @@ if ( ! $post ) { $count = 0; } else { - $count = $post->comment_count; + $count = $post->comment_count; $post_id = $post->ID; } @@ -1011,10 +1020,11 @@ $comment = get_comment(); $comment_date = $gmt ? $comment->comment_date_gmt : $comment->comment_date; - if ( '' == $d ) - $date = mysql2date(get_option('time_format'), $comment_date, $translate); - else - $date = mysql2date($d, $comment_date, $translate); + if ( '' == $d ) { + $date = mysql2date( get_option( 'time_format' ), $comment_date, $translate ); + } else { + $date = mysql2date( $d, $comment_date, $translate ); + } /** * Filters the returned comment time. @@ -1038,7 +1048,7 @@ * @param string $d Optional. The format of the time. Default user's settings. */ function comment_time( $d = '' ) { - echo get_comment_time($d); + echo get_comment_time( $d ); } /** @@ -1053,8 +1063,9 @@ */ function get_comment_type( $comment_ID = 0 ) { $comment = get_comment( $comment_ID ); - if ( '' == $comment->comment_type ) + if ( '' == $comment->comment_type ) { $comment->comment_type = 'comment'; + } /** * Filters the returned comment type. @@ -1063,7 +1074,7 @@ * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added. * * @param string $comment_type The type of comment, such as 'comment', 'pingback', or 'trackback'. - * @param int $comment_ID The comment ID. + * @param int $comment_ID The comment ID. * @param WP_Comment $comment The comment object. */ return apply_filters( 'get_comment_type', $comment->comment_type, $comment->comment_ID, $comment ); @@ -1079,18 +1090,24 @@ * @param string $pingbacktxt Optional. String to display for pingback type. Default false. */ function comment_type( $commenttxt = false, $trackbacktxt = false, $pingbacktxt = false ) { - if ( false === $commenttxt ) $commenttxt = _x( 'Comment', 'noun' ); - if ( false === $trackbacktxt ) $trackbacktxt = __( 'Trackback' ); - if ( false === $pingbacktxt ) $pingbacktxt = __( 'Pingback' ); + if ( false === $commenttxt ) { + $commenttxt = _x( 'Comment', 'noun' ); + } + if ( false === $trackbacktxt ) { + $trackbacktxt = __( 'Trackback' ); + } + if ( false === $pingbacktxt ) { + $pingbacktxt = __( 'Pingback' ); + } $type = get_comment_type(); - switch( $type ) { - case 'trackback' : + switch ( $type ) { + case 'trackback': echo $trackbacktxt; break; - case 'pingback' : + case 'pingback': echo $pingbacktxt; break; - default : + default: echo $commenttxt; } } @@ -1107,10 +1124,11 @@ * @return string The trackback URL after being filtered. */ function get_trackback_url() { - if ( '' != get_option('permalink_structure') ) - $tb_url = trailingslashit(get_permalink()) . user_trailingslashit('trackback', 'single_trackback'); - else - $tb_url = get_option('siteurl') . '/wp-trackback.php?p=' . get_the_ID(); + if ( '' != get_option( 'permalink_structure' ) ) { + $tb_url = trailingslashit( get_permalink() ) . user_trailingslashit( 'trackback', 'single_trackback' ); + } else { + $tb_url = get_option( 'siteurl' ) . '/wp-trackback.php?p=' . get_the_ID(); + } /** * Filters the returned trackback URL. @@ -1133,9 +1151,12 @@ */ function trackback_url( $deprecated_echo = true ) { if ( true !== $deprecated_echo ) { - _deprecated_argument( __FUNCTION__, '2.5.0', + _deprecated_argument( + __FUNCTION__, + '2.5.0', /* translators: %s: get_trackback_url() */ - sprintf( __( 'Use %s instead if you do not want the value echoed.' ), + sprintf( + __( 'Use %s instead if you do not want the value echoed.' ), 'get_trackback_url()' ) ); @@ -1171,17 +1192,21 @@ xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> \n"; + echo '"' . "\n"; + echo ' dc:title="' . str_replace( '--', '--', wptexturize( strip_tags( get_the_title() ) ) ) . '"' . "\n"; + echo ' trackback:ping="' . get_trackback_url() . '"' . " />\n"; echo ''; } /** - * Whether the current post is open for comments. + * Determines whether the current post is open for comments. + * + * For more information on this and similar theme functions, check out + * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ + * Conditional Tags} article in the Theme Developer Handbook. * * @since 1.5.0 * @@ -1190,10 +1215,10 @@ */ function comments_open( $post_id = null ) { - $_post = get_post($post_id); + $_post = get_post( $post_id ); $post_id = $_post ? $_post->ID : 0; - $open = ( 'open' == $_post->comment_status ); + $open = ( 'open' == $_post->comment_status ); /** * Filters whether the current post is open for comments. @@ -1207,7 +1232,11 @@ } /** - * Whether the current post is open for pings. + * Determines whether the current post is open for pings. + * + * For more information on this and similar theme functions, check out + * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ + * Conditional Tags} article in the Theme Developer Handbook. * * @since 1.5.0 * @@ -1216,10 +1245,10 @@ */ function pings_open( $post_id = null ) { - $_post = get_post($post_id); + $_post = get_post( $post_id ); $post_id = $_post ? $_post->ID : 0; - $open = ( 'open' == $_post->ping_status ); + $open = ( 'open' == $_post->ping_status ); /** * Filters whether the current post is open for pings. @@ -1247,7 +1276,7 @@ * @since 2.1.3 */ function wp_comment_form_unfiltered_html_nonce() { - $post = get_post(); + $post = get_post(); $post_id = $post ? $post->ID : 0; if ( current_user_can( 'unfiltered_html' ) ) { @@ -1294,13 +1323,15 @@ function comments_template( $file = '/comments.php', $separate_comments = false ) { global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage; - if ( !(is_single() || is_page() || $withcomments) || empty($post) ) + if ( ! ( is_single() || is_page() || $withcomments ) || empty( $post ) ) { return; + } - if ( empty($file) ) + if ( empty( $file ) ) { $file = '/comments.php'; + } - $req = get_option('require_name_email'); + $req = get_option( 'require_name_email' ); /* * Comment author information fetched from the comment cookies. @@ -1322,18 +1353,18 @@ /* * The url of the current comment author escaped for use in attributes. */ - $comment_author_url = esc_url($commenter['comment_author_url']); + $comment_author_url = esc_url( $commenter['comment_author_url'] ); $comment_args = array( - 'orderby' => 'comment_date_gmt', - 'order' => 'ASC', - 'status' => 'approve', - 'post_id' => $post->ID, - 'no_found_rows' => false, + 'orderby' => 'comment_date_gmt', + 'order' => 'ASC', + 'status' => 'approve', + 'post_id' => $post->ID, + 'no_found_rows' => false, 'update_comment_meta_cache' => false, // We lazy-load comment meta for performance. ); - if ( get_option('thread_comments') ) { + if ( get_option( 'thread_comments' ) ) { $comment_args['hierarchical'] = 'threaded'; } else { $comment_args['hierarchical'] = false; @@ -1341,8 +1372,12 @@ if ( $user_ID ) { $comment_args['include_unapproved'] = array( $user_ID ); - } elseif ( ! empty( $comment_author_email ) ) { - $comment_args['include_unapproved'] = array( $comment_author_email ); + } else { + $unapproved_email = wp_get_unapproved_comment_author_email(); + + if ( $unapproved_email ) { + $comment_args['include_unapproved'] = array( $unapproved_email ); + } } $per_page = 0; @@ -1353,7 +1388,7 @@ } $comment_args['number'] = $per_page; - $page = (int) get_query_var( 'cpage' ); + $page = (int) get_query_var( 'cpage' ); if ( $page ) { $comment_args['offset'] = ( $page - 1 ) * $per_page; @@ -1406,20 +1441,22 @@ * @type int $number Number of comments to fetch. * } */ - $comment_args = apply_filters( 'comments_template_query_args', $comment_args ); + $comment_args = apply_filters( 'comments_template_query_args', $comment_args ); $comment_query = new WP_Comment_Query( $comment_args ); - $_comments = $comment_query->comments; + $_comments = $comment_query->comments; // Trees must be flattened before they're passed to the walker. if ( $comment_args['hierarchical'] ) { $comments_flat = array(); foreach ( $_comments as $_comment ) { $comments_flat[] = $_comment; - $comment_children = $_comment->get_children( array( - 'format' => 'flat', - 'status' => $comment_args['status'], - 'orderby' => $comment_args['orderby'] - ) ); + $comment_children = $_comment->get_children( + array( + 'format' => 'flat', + 'status' => $comment_args['status'], + 'orderby' => $comment_args['orderby'], + ) + ); foreach ( $comment_children as $comment_child ) { $comments_flat[] = $comment_child; @@ -1439,25 +1476,26 @@ */ $wp_query->comments = apply_filters( 'comments_array', $comments_flat, $post->ID ); - $comments = &$wp_query->comments; - $wp_query->comment_count = count($wp_query->comments); + $comments = &$wp_query->comments; + $wp_query->comment_count = count( $wp_query->comments ); $wp_query->max_num_comment_pages = $comment_query->max_num_pages; if ( $separate_comments ) { - $wp_query->comments_by_type = separate_comments($comments); - $comments_by_type = &$wp_query->comments_by_type; + $wp_query->comments_by_type = separate_comments( $comments ); + $comments_by_type = &$wp_query->comments_by_type; } else { $wp_query->comments_by_type = array(); } $overridden_cpage = false; if ( '' == get_query_var( 'cpage' ) && $wp_query->max_num_comment_pages > 1 ) { - set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 ); + set_query_var( 'cpage', 'newest' == get_option( 'default_comments_page' ) ? get_comment_pages_count() : 1 ); $overridden_cpage = true; } - if ( !defined('COMMENTS_TEMPLATE') ) - define('COMMENTS_TEMPLATE', true); + if ( ! defined( 'COMMENTS_TEMPLATE' ) ) { + define( 'COMMENTS_TEMPLATE', true ); + } $theme_template = STYLESHEETPATH . $file; /** @@ -1468,12 +1506,13 @@ * @param string $theme_template The path to the theme template file. */ $include = apply_filters( 'comments_template', $theme_template ); - if ( file_exists( $include ) ) + if ( file_exists( $include ) ) { require( $include ); - elseif ( file_exists( TEMPLATEPATH . $file ) ) + } elseif ( file_exists( TEMPLATEPATH . $file ) ) { require( TEMPLATEPATH . $file ); - else // Backward compat code will be removed in a future release - require( ABSPATH . WPINC . '/theme-compat/comments.php'); + } else { // Backward compat code will be removed in a future release + require( ABSPATH . WPINC . '/theme-compat/comments.php' ); + } } /** @@ -1481,18 +1520,15 @@ * * @since 0.71 * - * @param string $zero Optional. String to display when no comments. Default false. - * @param string $one Optional. String to display when only one comment is available. - * Default false. - * @param string $more Optional. String to display when there are more than one comment. - * Default false. - * @param string $css_class Optional. CSS class to use for comments. Default empty. - * @param string $none Optional. String to display when comments have been turned off. - * Default false. + * @param false|string $zero Optional. String to display when no comments. Default false. + * @param false|string $one Optional. String to display when only one comment is available. Default false. + * @param false|string $more Optional. String to display when there are more than one comment. Default false. + * @param string $css_class Optional. CSS class to use for comments. Default empty. + * @param false|string $none Optional. String to display when comments have been turned off. Default false. */ function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) { - $id = get_the_ID(); - $title = get_the_title(); + $id = get_the_ID(); + $title = get_the_title(); $number = get_comments_number( $id ); if ( false === $zero ) { @@ -1506,7 +1542,7 @@ } if ( false === $more ) { - /* translators: 1: Number of comments 2: post title */ + /* translators: 1: number of comments, 2: post title */ $more = _n( '%1$s Comment on %2$s', '%1$s Comments on %2$s', $number ); $more = sprintf( $more, number_format_i18n( $number ), $title ); } @@ -1516,8 +1552,8 @@ $none = sprintf( __( 'Comments Off on %s' ), $title ); } - if ( 0 == $number && !comments_open() && !pings_open() ) { - echo '' . $none . ''; + if ( 0 == $number && ! comments_open() && ! pings_open() ) { + echo '' . $none . ''; return; } @@ -1543,8 +1579,8 @@ } echo '"'; - if ( !empty( $css_class ) ) { - echo ' class="'.$css_class.'" '; + if ( ! empty( $css_class ) ) { + echo ' class="' . $css_class . '" '; } $attributes = ''; @@ -1595,13 +1631,13 @@ 'add_below' => 'comment', 'respond_id' => 'respond', 'reply_text' => __( 'Reply' ), - /* translators: Comment reply button text. 1: Comment author name */ + /* translators: Comment reply button text. %s: Comment author name */ 'reply_to_text' => __( 'Reply to %s' ), 'login_text' => __( 'Log in to Reply' ), 'max_depth' => 0, 'depth' => 0, 'before' => '', - 'after' => '' + 'after' => '', ); $args = wp_parse_args( $args, $defaults ); @@ -1635,18 +1671,39 @@ $args = apply_filters( 'comment_reply_link_args', $args, $comment, $post ); if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) { - $link = sprintf( '', + $link = sprintf( + '', esc_url( wp_login_url( get_permalink() ) ), $args['login_text'] ); } else { - $onclick = sprintf( 'return addComment.moveForm( "%1$s-%2$s", "%2$s", "%3$s", "%4$s" )', - $args['add_below'], $comment->comment_ID, $args['respond_id'], $post->ID + $data_attributes = array( + 'commentid' => $comment->comment_ID, + 'postid' => $post->ID, + 'belowelement' => $args['add_below'] . '-' . $comment->comment_ID, + 'respondelement' => $args['respond_id'], ); - $link = sprintf( "%s", - esc_url( add_query_arg( 'replytocom', $comment->comment_ID, get_permalink( $post->ID ) ) ) . "#" . $args['respond_id'], - $onclick, + $data_attribute_string = ''; + + foreach ( $data_attributes as $name => $value ) { + $data_attribute_string .= " data-${name}=\"" . esc_attr( $value ) . '"'; + } + + $data_attribute_string = trim( $data_attribute_string ); + + $link = sprintf( + "%s", + esc_url( + add_query_arg( + array( + 'replytocom' => $comment->comment_ID, + 'unapproved' => false, + 'moderation-hash' => false, + ) + ) + ) . '#' . $args['respond_id'], + $data_attribute_string, esc_attr( sprintf( $args['reply_to_text'], $comment->comment_author ) ), $args['reply_text'] ); @@ -1678,8 +1735,8 @@ * Default current post. * @return mixed Link to show comment form, if successful. False, if comments are closed. */ -function comment_reply_link($args = array(), $comment = null, $post = null) { - echo get_comment_reply_link($args, $comment, $post); +function comment_reply_link( $args = array(), $comment = null, $post = null ) { + echo get_comment_reply_link( $args, $comment, $post ); } /** @@ -1705,35 +1762,40 @@ * Default current post. * @return false|null|string Link to show comment form, if successful. False, if comments are closed. */ -function get_post_reply_link($args = array(), $post = null) { +function get_post_reply_link( $args = array(), $post = null ) { $defaults = array( 'add_below' => 'post', 'respond_id' => 'respond', - 'reply_text' => __('Leave a Comment'), - 'login_text' => __('Log in to leave a Comment'), + 'reply_text' => __( 'Leave a Comment' ), + 'login_text' => __( 'Log in to leave a Comment' ), 'before' => '', 'after' => '', ); - $args = wp_parse_args($args, $defaults); + $args = wp_parse_args( $args, $defaults ); - $post = get_post($post); + $post = get_post( $post ); if ( ! comments_open( $post->ID ) ) { return false; } - if ( get_option('comment_registration') && ! is_user_logged_in() ) { - $link = sprintf( '', + if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) { + $link = sprintf( + '', wp_login_url( get_permalink() ), $args['login_text'] ); } else { - $onclick = sprintf( 'return addComment.moveForm( "%1$s-%2$s", "0", "%3$s", "%2$s" )', - $args['add_below'], $post->ID, $args['respond_id'] + $onclick = sprintf( + 'return addComment.moveForm( "%1$s-%2$s", "0", "%3$s", "%2$s" )', + $args['add_below'], + $post->ID, + $args['respond_id'] ); - $link = sprintf( "%s", + $link = sprintf( + "%s", get_permalink( $post->ID ) . '#' . $args['respond_id'], $onclick, $args['reply_text'] @@ -1764,8 +1826,8 @@ * Default current post. * @return string|bool|null Link to show comment form, if successful. False, if comments are closed. */ -function post_reply_link($args = array(), $post = null) { - echo get_post_reply_link($args, $post); +function post_reply_link( $args = array(), $post = null ) { + echo get_post_reply_link( $args, $post ); } /** @@ -1777,11 +1839,12 @@ * @return string */ function get_cancel_comment_reply_link( $text = '' ) { - if ( empty($text) ) - $text = __('Click here to cancel reply.'); + if ( empty( $text ) ) { + $text = __( 'Click here to cancel reply.' ); + } - $style = isset($_GET['replytocom']) ? '' : ' style="display:none;"'; - $link = esc_html( remove_query_arg('replytocom') ) . '#respond'; + $style = isset( $_GET['replytocom'] ) ? '' : ' style="display:none;"'; + $link = esc_html( remove_query_arg( array( 'replytocom', 'unapproved', 'moderation-hash' ) ) ) . '#respond'; $formatted_link = '' . $text . ''; @@ -1805,7 +1868,7 @@ * @param string $text Optional. Text to display for cancel reply link. Default empty. */ function cancel_comment_reply_link( $text = '' ) { - echo get_cancel_comment_reply_link($text); + echo get_cancel_comment_reply_link( $text ); } /** @@ -1817,12 +1880,13 @@ * @return string Hidden input HTML for replying to comments */ function get_comment_id_fields( $id = 0 ) { - if ( empty( $id ) ) + if ( empty( $id ) ) { $id = get_the_ID(); + } - $replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0; - $result = "\n"; - $result .= "\n"; + $replytoid = isset( $_GET['replytocom'] ) ? (int) $_GET['replytocom'] : 0; + $result = "\n"; + $result .= "\n"; /** * Filters the returned comment id fields. @@ -1870,17 +1934,21 @@ function comment_form_title( $noreplytext = false, $replytext = false, $linktoparent = true ) { global $comment; - if ( false === $noreplytext ) $noreplytext = __( 'Leave a Reply' ); - if ( false === $replytext ) $replytext = __( 'Leave a Reply to %s' ); - - $replytoid = isset($_GET['replytocom']) ? (int) $_GET['replytocom'] : 0; + if ( false === $noreplytext ) { + $noreplytext = __( 'Leave a Reply' ); + } + if ( false === $replytext ) { + $replytext = __( 'Leave a Reply to %s' ); + } - if ( 0 == $replytoid ) + $replytoid = isset( $_GET['replytocom'] ) ? (int) $_GET['replytocom'] : 0; + + if ( 0 == $replytoid ) { echo $noreplytext; - else { + } else { // Sets the global so that template tags can be used in the comment form. - $comment = get_comment($replytoid); - $author = ( $linktoparent ) ? '' . get_comment_author( $comment ) . '' : get_comment_author( $comment ); + $comment = get_comment( $replytoid ); + $author = ( $linktoparent ) ? '' . get_comment_author( $comment ) . '' : get_comment_author( $comment ); printf( $replytext, $author ); } } @@ -1928,7 +1996,7 @@ $in_comment_loop = true; - $comment_alt = $comment_thread_alt = 0; + $comment_alt = $comment_thread_alt = 0; $comment_depth = 1; $defaults = array( @@ -1964,13 +2032,15 @@ // Figure out what comments we'll be looping through ($_comments) if ( null !== $comments ) { $comments = (array) $comments; - if ( empty($comments) ) + if ( empty( $comments ) ) { return; + } if ( 'all' != $r['type'] ) { - $comments_by_type = separate_comments($comments); - if ( empty($comments_by_type[$r['type']]) ) + $comments_by_type = separate_comments( $comments ); + if ( empty( $comments_by_type[ $r['type'] ] ) ) { return; - $_comments = $comments_by_type[$r['type']]; + } + $_comments = $comments_by_type[ $r['type'] ]; } else { $_comments = $comments; } @@ -1990,16 +2060,17 @@ $comment_args = array( 'post_id' => get_the_ID(), 'orderby' => 'comment_date_gmt', - 'order' => 'ASC', - 'status' => 'approve', + 'order' => 'ASC', + 'status' => 'approve', ); if ( is_user_logged_in() ) { $comment_args['include_unapproved'] = get_current_user_id(); } else { - $commenter = wp_get_current_commenter(); - if ( $commenter['comment_author_email'] ) { - $comment_args['include_unapproved'] = $commenter['comment_author_email']; + $unapproved_email = wp_get_unapproved_comment_author_email(); + + if ( $unapproved_email ) { + $comment_args['include_unapproved'] = array( $unapproved_email ); } } @@ -2017,74 +2088,80 @@ } } - // Otherwise, fall back on the comments from `$wp_query->comments`. + // Otherwise, fall back on the comments from `$wp_query->comments`. } else { - if ( empty($wp_query->comments) ) + if ( empty( $wp_query->comments ) ) { return; + } if ( 'all' != $r['type'] ) { - if ( empty($wp_query->comments_by_type) ) - $wp_query->comments_by_type = separate_comments($wp_query->comments); - if ( empty($wp_query->comments_by_type[$r['type']]) ) + if ( empty( $wp_query->comments_by_type ) ) { + $wp_query->comments_by_type = separate_comments( $wp_query->comments ); + } + if ( empty( $wp_query->comments_by_type[ $r['type'] ] ) ) { return; - $_comments = $wp_query->comments_by_type[$r['type']]; + } + $_comments = $wp_query->comments_by_type[ $r['type'] ]; } else { $_comments = $wp_query->comments; } if ( $wp_query->max_num_comment_pages ) { $default_comments_page = get_option( 'default_comments_page' ); - $cpage = get_query_var( 'cpage' ); + $cpage = get_query_var( 'cpage' ); if ( 'newest' === $default_comments_page ) { $r['cpage'] = $cpage; - /* - * When first page shows oldest comments, post permalink is the same as - * the comment permalink. - */ + /* + * When first page shows oldest comments, post permalink is the same as + * the comment permalink. + */ } elseif ( $cpage == 1 ) { $r['cpage'] = ''; } else { $r['cpage'] = $cpage; } - $r['page'] = 0; + $r['page'] = 0; $r['per_page'] = 0; } } } if ( '' === $r['per_page'] && get_option( 'page_comments' ) ) { - $r['per_page'] = get_query_var('comments_per_page'); + $r['per_page'] = get_query_var( 'comments_per_page' ); } - if ( empty($r['per_page']) ) { + if ( empty( $r['per_page'] ) ) { $r['per_page'] = 0; - $r['page'] = 0; + $r['page'] = 0; } if ( '' === $r['max_depth'] ) { - if ( get_option('thread_comments') ) - $r['max_depth'] = get_option('thread_comments_depth'); - else + if ( get_option( 'thread_comments' ) ) { + $r['max_depth'] = get_option( 'thread_comments_depth' ); + } else { $r['max_depth'] = -1; + } } if ( '' === $r['page'] ) { - if ( empty($overridden_cpage) ) { - $r['page'] = get_query_var('cpage'); + if ( empty( $overridden_cpage ) ) { + $r['page'] = get_query_var( 'cpage' ); } else { - $threaded = ( -1 != $r['max_depth'] ); - $r['page'] = ( 'newest' == get_option('default_comments_page') ) ? get_comment_pages_count($_comments, $r['per_page'], $threaded) : 1; + $threaded = ( -1 != $r['max_depth'] ); + $r['page'] = ( 'newest' == get_option( 'default_comments_page' ) ) ? get_comment_pages_count( $_comments, $r['per_page'], $threaded ) : 1; set_query_var( 'cpage', $r['page'] ); } } // Validation check - $r['page'] = intval($r['page']); - if ( 0 == $r['page'] && 0 != $r['per_page'] ) + $r['page'] = intval( $r['page'] ); + if ( 0 == $r['page'] && 0 != $r['per_page'] ) { $r['page'] = 1; + } - if ( null === $r['reverse_top_level'] ) - $r['reverse_top_level'] = ( 'desc' == get_option('comment_order') ); + if ( null === $r['reverse_top_level'] ) { + $r['reverse_top_level'] = ( 'desc' == get_option( 'comment_order' ) ); + } wp_queue_comments_for_comment_meta_lazyload( $_comments ); @@ -2170,8 +2247,9 @@ * @param int|WP_Post $post_id Post ID or WP_Post object to generate the form for. Default current post. */ function comment_form( $args = array(), $post_id = null ) { - if ( null === $post_id ) + if ( null === $post_id ) { $post_id = get_the_ID(); + } // Exit the function when comments for the post are closed. if ( ! comments_open( $post_id ) ) { @@ -2185,23 +2263,24 @@ return; } - $commenter = wp_get_current_commenter(); - $user = wp_get_current_user(); + $commenter = wp_get_current_commenter(); + $user = wp_get_current_user(); $user_identity = $user->exists() ? $user->display_name : ''; $args = wp_parse_args( $args ); - if ( ! isset( $args['format'] ) ) + if ( ! isset( $args['format'] ) ) { $args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml'; + } $req = get_option( 'require_name_email' ); $html_req = ( $req ? " required='required'" : '' ); $html5 = 'html5' === $args['format']; - $fields = array( - 'author' => '

' . ' ' . + $fields = array( + 'author' => '

' . ' ' . '

', - 'email' => '', - 'url' => '

' . + 'url' => '

' . '

', ); @@ -2223,29 +2302,29 @@ * * @since 3.0.0 * - * @param array $fields The default comment fields. + * @param string[] $fields Array of the default comment fields. */ - $fields = apply_filters( 'comment_form_default_fields', $fields ); + $fields = apply_filters( 'comment_form_default_fields', $fields ); $defaults = array( 'fields' => $fields, 'comment_field' => '

', /** This filter is documented in wp-includes/link-template.php */ 'must_log_in' => '', + /* translators: %s: login URL */ + __( 'You must be logged in to post a comment.' ), + wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) + ) . '

', /** This filter is documented in wp-includes/link-template.php */ 'logged_in_as' => '

' . sprintf( - /* translators: 1: edit user link, 2: accessibility text, 3: user name, 4: logout URL */ - __( 'Logged in as %3$s. Log out?' ), - get_edit_user_link(), - /* translators: %s: user name */ - esc_attr( sprintf( __( 'Logged in as %s. Edit your profile.' ), $user_identity ) ), - $user_identity, - wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) - ) . '

', - 'comment_notes_before' => '

' . __( 'Your email address will not be published.' ) . ''. ( $req ? $required_text : '' ) . '

', + /* translators: 1: edit user link, 2: accessibility text, 3: user name, 4: logout URL */ + __( 'Logged in as %3$s. Log out?' ), + get_edit_user_link(), + /* translators: %s: user name */ + esc_attr( sprintf( __( 'Logged in as %s. Edit your profile.' ), $user_identity ) ), + $user_identity, + wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) ) + ) . '

', + 'comment_notes_before' => '

' . __( 'Your email address will not be published.' ) . '' . ( $req ? $required_text : '' ) . '

', 'comment_notes_after' => '', 'action' => site_url( '/wp-comments-post.php' ), 'id_form' => 'commentform', @@ -2301,7 +2380,7 @@ echo $args['title_reply_after']; - if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) : + if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) : echo $args['must_log_in']; /** * Fires after the HTML-formatted 'must log in after' message in the comment form. @@ -2309,7 +2388,8 @@ * @since 3.0.0 */ do_action( 'comment_form_must_log_in_after' ); - else : ?> + else : + ?>
>