2006-04-19 06:13:28 -04:00
|
|
|
<?php
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
|
|
|
* Comment template functions
|
|
|
|
*
|
|
|
|
* These functions are meant to live inside of the WordPress loop.
|
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
* @subpackage Template
|
2006-04-19 06:13:28 -04:00
|
|
|
*/
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* If the comment has an empty comment_author field, then 'Anonymous' person is
|
|
|
|
* assumed.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to retrieve the author.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
* @return string The comment author
|
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_author( $comment_id = 0 ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
|
Comments: Fix fatal error when get_comment_author() receives an object with no comment_id.
[58335] introduced `(string)` type casting of the passed in `$comment_id` value. If `$comment_id` is a scalar, it works as expected. But if it's an `object`, the following fatal error is thrown:
{{{
Object of class WP_Comment could not be converted to string
}}}
This fatal error happens when the incoming `$comment_id` is an instance of `WP_Comment` (or any object) without a `comment_ID` (empty).
This changeset adds tests to demonstrate the fatal error and validate the fix.
It fixes the fatal error by restructuring the ternary checks into an `if/elseif/else` structure for the 3 paths:
- When `$comment->comment_ID` is not empty, then it uses the property.
- When `$comment_id` is scalar, then it type casts it to a `string`.
- Else, the default is an empty `string`.
Follow-up to [58335], [41127], [52818].
Props ambrosiawt, hellofromTonya, jorbin, mukesh27, SergeyBiryukov.
Fixes #61681.
Built from https://develop.svn.wordpress.org/trunk@58755
git-svn-id: http://core.svn.wordpress.org/trunk@58157 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-07-18 11:09:15 -04:00
|
|
|
if ( ! empty( $comment->comment_ID ) ) {
|
|
|
|
$comment_id = $comment->comment_ID;
|
|
|
|
} elseif ( is_scalar( $comment_id ) ) {
|
|
|
|
$comment_id = (string) $comment_id;
|
|
|
|
} else {
|
2024-07-25 18:38:16 -04:00
|
|
|
$comment_id = '0';
|
Comments: Fix fatal error when get_comment_author() receives an object with no comment_id.
[58335] introduced `(string)` type casting of the passed in `$comment_id` value. If `$comment_id` is a scalar, it works as expected. But if it's an `object`, the following fatal error is thrown:
{{{
Object of class WP_Comment could not be converted to string
}}}
This fatal error happens when the incoming `$comment_id` is an instance of `WP_Comment` (or any object) without a `comment_ID` (empty).
This changeset adds tests to demonstrate the fatal error and validate the fix.
It fixes the fatal error by restructuring the ternary checks into an `if/elseif/else` structure for the 3 paths:
- When `$comment->comment_ID` is not empty, then it uses the property.
- When `$comment_id` is scalar, then it type casts it to a `string`.
- Else, the default is an empty `string`.
Follow-up to [58335], [41127], [52818].
Props ambrosiawt, hellofromTonya, jorbin, mukesh27, SergeyBiryukov.
Fixes #61681.
Built from https://develop.svn.wordpress.org/trunk@58755
git-svn-id: http://core.svn.wordpress.org/trunk@58157 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-07-18 11:09:15 -04:00
|
|
|
}
|
2013-08-27 09:17:09 -04:00
|
|
|
|
|
|
|
if ( empty( $comment->comment_author ) ) {
|
2022-03-03 15:33:59 -05:00
|
|
|
$user = ! empty( $comment->user_id ) ? get_userdata( $comment->user_id ) : false;
|
2019-07-02 19:42:58 -04:00
|
|
|
if ( $user ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author = $user->display_name;
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author = __( 'Anonymous' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-11-19 01:58:44 -05:00
|
|
|
} else {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author = $comment->comment_author;
|
2008-11-19 01:58:44 -05:00
|
|
|
}
|
2013-08-27 09:17:09 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment author name.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_author', $comment_author, $comment_id, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2008-06-22 16:23:23 -04:00
|
|
|
* Displays the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-26 17:49:05 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_author( $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2023-04-19 10:40:19 -04:00
|
|
|
|
|
|
|
$comment_author = get_comment_author( $comment );
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's name for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_author The comment author's username.
|
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
echo apply_filters( 'comment_author', $comment_author, $comment->comment_ID );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the email of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's email.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
* @return string The current comment author's email
|
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_author_email( $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's returned email address.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param string $comment_author_email The comment author's email address.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2015-09-10 14:10:25 -04:00
|
|
|
return apply_filters( 'get_comment_author_email', $comment->comment_author_email, $comment->comment_ID, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the email of the author of the current global $comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* Care should be taken to protect the email address and assure that email
|
2019-03-13 15:32:53 -04:00
|
|
|
* harvesters do not capture your commenter's email address. Most assume that
|
2016-01-27 22:35:27 -05:00
|
|
|
* their email address will not appear in raw form on the site. Doing so will
|
2008-06-22 16:23:23 -04:00
|
|
|
* enable anyone, including those that people don't want to get the email
|
|
|
|
* address and use it for their own means good and bad.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-25 12:34:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's email.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_author_email( $comment_id = 0 ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
|
|
|
|
$comment_author_email = get_comment_author_email( $comment );
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's email for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_author_email The comment author's email address.
|
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
echo apply_filters( 'author_email', $comment_author_email, $comment->comment_ID );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the HTML email link to the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* Care should be taken to protect the email address and assure that email
|
2019-03-13 15:32:53 -04:00
|
|
|
* harvesters do not capture your commenter's email address. Most assume that
|
2016-01-27 22:35:27 -05:00
|
|
|
* their email address will not appear in raw form on the site. Doing so will
|
2008-06-22 16:23:23 -04:00
|
|
|
* enable anyone, including those that people don't want to get the email
|
|
|
|
* address and use it for their own means good and bad.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @since 0.71
|
2016-07-20 12:57:32 -04:00
|
|
|
* @since 4.6.0 Added the `$comment` parameter.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
function comment_author_email_link( $link_text = '', $before = '', $after = '', $comment = null ) {
|
|
|
|
$link = get_comment_author_email_link( $link_text, $before, $after, $comment );
|
2019-07-02 19:42:58 -04:00
|
|
|
if ( $link ) {
|
2008-10-31 14:05:25 -04:00
|
|
|
echo $link;
|
2016-05-02 15:59:27 -04:00
|
|
|
}
|
2008-10-31 14:05:25 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Returns the HTML email link to the author of the current comment.
|
2008-10-31 14:05:25 -04:00
|
|
|
*
|
|
|
|
* Care should be taken to protect the email address and assure that email
|
2019-03-13 15:32:53 -04:00
|
|
|
* harvesters do not capture your commenter's email address. Most assume that
|
2016-01-27 22:35:27 -05:00
|
|
|
* their email address will not appear in raw form on the site. Doing so will
|
2008-10-31 14:05:25 -04:00
|
|
|
* enable anyone, including those that people don't want to get the email
|
|
|
|
* address and use it for their own means good and bad.
|
|
|
|
*
|
2013-12-24 13:57:12 -05:00
|
|
|
* @since 2.7.0
|
2016-07-20 12:57:32 -04:00
|
|
|
* @since 4.6.0 Added the `$comment` parameter.
|
2008-10-31 14:05:25 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2016-05-02 16:04:28 -04:00
|
|
|
* @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().
|
2008-10-31 14:05:25 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
function get_comment_author_email_link( $link_text = '', $before = '', $after = '', $comment = null ) {
|
2016-05-02 15:59:27 -04:00
|
|
|
$comment = get_comment( $comment );
|
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's email for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* Care should be taken to protect the email address and assure that email
|
2014-11-28 06:22:23 -05:00
|
|
|
* harvesters do not capture your commenter's email address.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
Update the changelogs for the comment hook parameters added in [30092].
Parameters were added to the `get_comment_author`, `comment_author`, `get_comment_author_email`, `author_email`, `comment_email`, `get_comment_author_link`, `get_comment_author_IP`, `get_comment_author_url`, `comment_url`, `get_comment_excerpt`, `comment_excerpt`, `get_comment_ID`, and `get_comment_type` filters.
Fixes #22380.
Built from https://develop.svn.wordpress.org/trunk@30111
git-svn-id: http://core.svn.wordpress.org/trunk@30111 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 23:52:22 -04:00
|
|
|
* @since 4.1.0 The `$comment` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param string $comment_author_email The comment author's email address.
|
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
$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;
|
2008-10-31 14:05:25 -04:00
|
|
|
} else {
|
|
|
|
return '';
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the HTML link to the URL of the author of the current comment.
|
2013-09-22 06:16:09 -04:00
|
|
|
*
|
2013-09-19 01:56:10 -04:00
|
|
|
* Both get_comment_author_url() and get_comment_author() rely on get_comment(),
|
2023-02-12 13:08:21 -05:00
|
|
|
* which falls back to the global comment variable if the $comment_id argument is empty.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's link.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2013-09-19 01:56:10 -04:00
|
|
|
* @return string The comment author name or HTML link for author's URL.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_author_link( $comment_id = 0 ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
|
2024-07-25 18:38:16 -04:00
|
|
|
if ( ! empty( $comment->comment_ID ) ) {
|
|
|
|
$comment_id = $comment->comment_ID;
|
|
|
|
} elseif ( is_scalar( $comment_id ) ) {
|
|
|
|
$comment_id = (string) $comment_id;
|
|
|
|
} else {
|
|
|
|
$comment_id = '0';
|
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$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;
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
2023-02-07 13:54:19 -05:00
|
|
|
$rel_parts = array( 'ugc' );
|
2023-04-19 10:40:19 -04:00
|
|
|
if ( ! wp_is_internal_link( $comment_author_url ) ) {
|
2023-02-07 13:54:19 -05:00
|
|
|
$rel_parts = array_merge(
|
|
|
|
$rel_parts,
|
|
|
|
array( 'external', 'nofollow' )
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Filters the rel attributes of the comment author's link.
|
|
|
|
*
|
|
|
|
* @since 6.2.0
|
|
|
|
*
|
2023-03-08 19:20:18 -05:00
|
|
|
* @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.
|
2023-02-07 13:54:19 -05:00
|
|
|
*/
|
|
|
|
$rel_parts = apply_filters( 'comment_author_link_rel', $rel_parts, $comment );
|
|
|
|
|
|
|
|
$rel = implode( ' ', $rel_parts );
|
|
|
|
$rel = esc_attr( $rel );
|
2023-03-08 19:20:18 -05:00
|
|
|
// Empty space before 'rel' is necessary for later sprintf().
|
2023-02-07 13:54:19 -05:00
|
|
|
$rel = ! empty( $rel ) ? sprintf( ' rel="%s"', $rel ) : '';
|
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author_link = sprintf(
|
2023-02-07 13:54:19 -05:00
|
|
|
'<a href="%1$s" class="url"%2$s>%3$s</a>',
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author_url,
|
2023-02-07 13:54:19 -05:00
|
|
|
$rel,
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author
|
2023-02-07 13:54:19 -05:00
|
|
|
);
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's link for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2023-04-19 10:40:19 -04:00
|
|
|
* @since 4.1.0 The `$comment_author` and `$comment_id` parameters were added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_author_link', $comment_author_link, $comment_author, $comment_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the HTML link to the URL of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2014-02-09 22:20:12 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's link.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_author_link( $comment_id = 0 ) {
|
|
|
|
echo get_comment_author_link( $comment_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2022-04-26 02:20:08 -04:00
|
|
|
* Retrieves the IP address of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's IP address.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2021-07-01 17:12:58 -04:00
|
|
|
* @return string Comment author's IP address, or an empty string if it's not available.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
|
|
|
$comment = get_comment( $comment_id );
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's returned IP address.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
Coding Standards: Rename `$comment_post_ID` and `$comment_author_IP` variables in various files.
This fixes two WPCS warnings:
* `Variable "$comment_post_ID" is not in valid snake_case format`
* `Variable "$comment_author_IP" is not in valid snake_case format`
While matching the database fields of the same name, these variables did not follow the WordPress coding standards, and are now renamed to address that.
Note: The name change only affects internal variables and parameters for a few actions receiving a comment post ID:
* `edit_comment`
* `comment_id_not_found`
* `comment_closed`
* `comment_on_trash`
* `comment_on_draft`
* `comment_on_password_protected`
* `pre_comment_on_post`
The change does not affect parameters for functions receiving an array of comment data:
* `wp_insert_comment()`
* `wp_new_comment()`
* `wp_update_comment()`
* `wp_handle_comment_submission()`
The associated array keys still match the database fields: `comment_post_ID` and `comment_author_IP`.
Follow-up to [1706], [2894], [8720], [28427], [28437], [28457], [34799], [53720],
See #55647, #56244.
Built from https://develop.svn.wordpress.org/trunk@53723
git-svn-id: http://core.svn.wordpress.org/trunk@53282 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-19 12:19:11 -04:00
|
|
|
* @param string $comment_author_ip The comment author's IP address, or an empty string if it's not available.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2019-07-04 21:45:56 -04:00
|
|
|
return apply_filters( 'get_comment_author_IP', $comment->comment_author_IP, $comment->comment_ID, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the IP address of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-25 12:34:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's IP address.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_author_IP( $comment_id = 0 ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
|
|
|
echo esc_html( get_comment_author_IP( $comment_id ) );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:10:05 -05:00
|
|
|
* Retrieves the URL of the author of the current comment, not linked.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to get the author's URL.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2019-12-24 11:10:05 -05:00
|
|
|
* @return string Comment author URL, if provided, an empty string otherwise.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_author_url( $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2023-04-19 10:40:19 -04:00
|
|
|
|
|
|
|
$comment_author_url = '';
|
|
|
|
$comment_id = 0;
|
2020-07-23 09:11:04 -04:00
|
|
|
|
2016-04-22 18:45:27 -04:00
|
|
|
if ( ! empty( $comment ) ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$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;
|
2016-04-22 18:45:27 -04:00
|
|
|
}
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-10-30 10:39:10 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's URL.
|
2013-10-30 10:39:10 -04:00
|
|
|
*
|
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2013-10-30 10:39:10 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2013-10-30 10:39:10 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_author_url', $comment_author_url, $comment_id, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:10:05 -05:00
|
|
|
* Displays the URL of the author of the current comment, not linked.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-25 12:34:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or the ID of the comment for which to print the author's URL.
|
2017-11-30 18:11:00 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_author_url( $comment_id = 0 ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
|
|
|
|
$comment_author_url = get_comment_author_url( $comment );
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's URL for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_author_url The comment author's URL.
|
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
echo apply_filters( 'comment_url', $comment_author_url, $comment->comment_ID );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:10:05 -05:00
|
|
|
* Retrieves the HTML link of the URL of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* $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
|
2008-06-22 16:23:23 -04:00
|
|
|
* will be ignored.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* Encapsulate the HTML link between the $before and $after. So it will appear
|
|
|
|
* in the order of $before, link, and finally $after.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2016-07-20 12:57:32 -04:00
|
|
|
* @since 4.6.0 Added the `$comment` parameter.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2013-09-23 00:16:08 -04:00
|
|
|
* @return string The HTML link between the $before and $after parameters.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
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;
|
2006-04-19 06:13:28 -04:00
|
|
|
$display = str_replace( 'http://www.', '', $display );
|
|
|
|
$display = str_replace( 'http://', '', $display );
|
2014-10-29 15:07:22 -04:00
|
|
|
|
Code Modernization: Replace usage of `substr()` with `str_starts_with()` and `str_ends_with()`.
`str_starts_with()` and `str_ends_with()` were introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) begins or ends with the given substring (needle).
WordPress core includes a polyfill for these functions on PHP < 8.0 as of WordPress 5.9.
This commit uses `str_starts_with()` and `str_ends_with()` in core files where appropriate:
* `$needle === substr( $string, 0, $length )`, where `$length` is the length of `$needle`, is replaced with `str_starts_with( $haystack, $needle )`.
* `$needle === substr( $string, $offset )`, where `$offset` is negative and the absolute value of `$offset` is the length of `$needle`, is replaced with `str_ends_with( $haystack, $needle )`.
This aims to make the code more readable and consistent, as well as better aligned with modern development practices.
Follow-up to [52039], [52040], [52326], [55703], [55710], [55987], [55988].
Props Soean, spacedmonkey, Clorith, ocean90, azaozz, sabernhardt, SergeyBiryukov.
Fixes #58220.
Built from https://develop.svn.wordpress.org/trunk@55990
git-svn-id: http://core.svn.wordpress.org/trunk@55502 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-22 10:57:24 -04:00
|
|
|
if ( str_ends_with( $display, '/' ) ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$display = substr( $display, 0, -1 );
|
2014-10-29 15:07:22 -04:00
|
|
|
}
|
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author_url_link = $before . sprintf(
|
|
|
|
'<a href="%1$s" rel="external">%2$s</a>',
|
|
|
|
$comment_author_url,
|
|
|
|
$display
|
|
|
|
) . $after;
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment author's returned URL link.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_author_url_link The HTML-formatted comment author URL link.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_author_url_link', $comment_author_url_link );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:10:05 -05:00
|
|
|
* Displays the HTML link of the URL of the author of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2016-07-20 12:57:32 -04:00
|
|
|
* @since 4.6.0 Added the `$comment` parameter.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
function comment_author_url_link( $link_text = '', $before = '', $after = '', $comment = 0 ) {
|
|
|
|
echo get_comment_author_url_link( $link_text, $before, $after, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2008-08-20 19:48:09 -04:00
|
|
|
/**
|
2014-02-09 22:20:12 -05:00
|
|
|
* Generates semantic classes for each comment element.
|
2008-08-20 19:48:09 -04:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 2.7.0
|
2015-09-16 09:52:25 -04:00
|
|
|
* @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object.
|
2008-08-20 19:48:09 -04:00
|
|
|
*
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
* @param string|string[] $css_class Optional. One or more classes to add to the class list.
|
|
|
|
* Default empty.
|
2022-12-12 06:51:11 -05:00
|
|
|
* @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.
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
* @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.
|
2008-08-20 19:48:09 -04:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function comment_class( $css_class = '', $comment = null, $post = null, $display = true ) {
|
2020-01-28 19:45:18 -05:00
|
|
|
// Separates classes with a single space, collates classes for comment DIV.
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
$css_class = 'class="' . implode( ' ', get_comment_class( $css_class, $comment, $post ) ) . '"';
|
2020-01-11 13:32:05 -05:00
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
if ( $display ) {
|
|
|
|
echo $css_class;
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
return $css_class;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-08-20 19:48:09 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2014-02-09 22:20:12 -05:00
|
|
|
* Returns the classes for the comment div as an array.
|
2008-08-20 19:48:09 -04:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 2.7.0
|
2015-09-16 09:52:25 -04:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2008-08-20 19:48:09 -04:00
|
|
|
*
|
2015-05-24 01:19:24 -04:00
|
|
|
* @global int $comment_alt
|
|
|
|
* @global int $comment_depth
|
|
|
|
* @global int $comment_thread_alt
|
|
|
|
*
|
2022-12-12 06:51:11 -05:00
|
|
|
* @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.
|
2019-11-05 16:23:02 -05:00
|
|
|
* @return string[] An array of classes.
|
2008-08-20 19:48:09 -04:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function get_comment_class( $css_class = '', $comment_id = null, $post = null ) {
|
2008-09-24 00:45:50 -04:00
|
|
|
global $comment_alt, $comment_depth, $comment_thread_alt;
|
2008-08-20 19:48:09 -04:00
|
|
|
|
|
|
|
$classes = array();
|
|
|
|
|
2015-09-23 10:09:26 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
if ( ! $comment ) {
|
|
|
|
return $classes;
|
|
|
|
}
|
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Get the comment type (comment, trackback).
|
2008-10-29 18:25:06 -04:00
|
|
|
$classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
|
2008-08-20 19:48:09 -04:00
|
|
|
|
2015-02-22 21:52:24 -05:00
|
|
|
// Add classes for comment authors that are registered users.
|
2019-07-02 19:42:58 -04:00
|
|
|
$user = $comment->user_id ? get_userdata( $comment->user_id ) : false;
|
|
|
|
if ( $user ) {
|
2009-04-05 13:38:19 -04:00
|
|
|
$classes[] = 'byuser';
|
2015-02-22 21:52:24 -05:00
|
|
|
$classes[] = 'comment-author-' . sanitize_html_class( $user->user_nicename, $comment->user_id );
|
2020-01-28 19:45:18 -05:00
|
|
|
// For comment authors who are the author of the post.
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
$_post = get_post( $post );
|
|
|
|
if ( $_post ) {
|
|
|
|
if ( $comment->user_id === $_post->post_author ) {
|
2008-08-20 19:48:09 -04:00
|
|
|
$classes[] = 'bypostauthor';
|
2015-02-22 21:52:24 -05:00
|
|
|
}
|
2008-08-20 19:48:09 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $comment_alt ) ) {
|
2008-08-20 19:48:09 -04:00
|
|
|
$comment_alt = 0;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
|
|
|
if ( empty( $comment_depth ) ) {
|
2008-09-24 00:45:50 -04:00
|
|
|
$comment_depth = 1;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
|
|
|
if ( empty( $comment_thread_alt ) ) {
|
2008-09-24 00:45:50 -04:00
|
|
|
$comment_thread_alt = 0;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-08-20 19:48:09 -04:00
|
|
|
|
2008-09-11 15:25:50 -04:00
|
|
|
if ( $comment_alt % 2 ) {
|
2008-08-20 19:48:09 -04:00
|
|
|
$classes[] = 'odd';
|
2008-09-11 15:25:50 -04:00
|
|
|
$classes[] = 'alt';
|
|
|
|
} else {
|
2008-08-20 19:48:09 -04:00
|
|
|
$classes[] = 'even';
|
2008-09-11 15:25:50 -04:00
|
|
|
}
|
2008-08-20 19:48:09 -04:00
|
|
|
|
2023-09-09 05:28:26 -04:00
|
|
|
++$comment_alt;
|
2008-08-20 19:48:09 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Alt for top-level comments.
|
2024-10-06 12:56:19 -04:00
|
|
|
if ( 1 === $comment_depth ) {
|
2008-09-24 00:45:50 -04:00
|
|
|
if ( $comment_thread_alt % 2 ) {
|
|
|
|
$classes[] = 'thread-odd';
|
|
|
|
$classes[] = 'thread-alt';
|
|
|
|
} else {
|
|
|
|
$classes[] = 'thread-even';
|
|
|
|
}
|
2023-09-09 05:28:26 -04:00
|
|
|
++$comment_thread_alt;
|
2008-09-24 00:45:50 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
$classes[] = "depth-$comment_depth";
|
|
|
|
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
if ( ! empty( $css_class ) ) {
|
|
|
|
if ( ! is_array( $css_class ) ) {
|
|
|
|
$css_class = preg_split( '#\s+#', $css_class );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
$classes = array_merge( $classes, $css_class );
|
2008-08-20 19:48:09 -04:00
|
|
|
}
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$classes = array_map( 'esc_attr', $classes );
|
2009-08-18 12:05:07 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned CSS classes for the current comment.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2018-03-25 15:33:31 -04:00
|
|
|
* @param string[] $classes An array of comment classes.
|
Code Modernization: Rename parameters that use reserved keywords in `wp-includes/comment-template.php`.
While using reserved PHP keywords as parameter name labels is allowed, in the context of function calls using named parameters in PHP 8.0+, this will easily lead to confusion. To avoid that, it is recommended not to use reserved keywords as function parameter names.
This commit:
* Renames the `$class` parameter to `$css_class` in `comment_class()` and `get_comment_class()`.
* Renames the `$echo` parameter to `$display` in `comment_class()`.
Follow-up to [52946], [52996], [52997], [52998], [53003], [53014], [53029], [53039], [53116], [53117], [53137], [53174], [53184], [53185], [53192], [53193], [53198], [53203], [53207], [53215], [53216], [53220], [53230], [53232], [53236], [53239], [53240], [53242], [53243], [53245], [53246], [53257], [53269], [53270], [53271], [53272], [53273], [53274], [53275], [53276], [53277], [53281], [53283], [53284].
Props jrf, aristath, poena, justinahinon, SergeyBiryukov.
See #55327.
Built from https://develop.svn.wordpress.org/trunk@53285
git-svn-id: http://core.svn.wordpress.org/trunk@52874 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-04-26 11:08:16 -04:00
|
|
|
* @param string[] $css_class An array of additional classes added to the list.
|
2021-11-18 08:57:01 -05:00
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2015-09-16 09:52:25 -04:00
|
|
|
* @param WP_Comment $comment The comment object.
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param int|WP_Post $post The post ID or WP_Post object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
return apply_filters( 'comment_class', $classes, $css_class, $comment->comment_ID, $comment, $post );
|
2008-08-20 19:48:09 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the comment date of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2020-08-31 20:43:06 -04:00
|
|
|
* @param string $format Optional. PHP date format. Defaults to the 'date_format' option.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the date.
|
2020-07-23 17:11:05 -04:00
|
|
|
* Default current comment.
|
2013-09-23 00:16:08 -04:00
|
|
|
* @return string The comment's date.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_date( $format = '', $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2020-08-31 14:30:05 -04:00
|
|
|
$_format = ! empty( $format ) ? $format : get_option( 'date_format' );
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_date = mysql2date( $_format, $comment->comment_date );
|
2020-08-31 11:58:04 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment date.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string|int $comment_date Formatted date string or Unix timestamp.
|
|
|
|
* @param string $format PHP date format.
|
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_date', $comment_date, $format, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the comment date of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2020-08-31 20:43:06 -04:00
|
|
|
* @param string $format Optional. PHP date format. Defaults to the 'date_format' option.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id WP_Comment or ID of the comment for which to print the date.
|
2015-09-16 09:52:25 -04:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_date( $format = '', $comment_id = 0 ) {
|
|
|
|
echo get_comment_date( $format, $comment_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-06-08 14:42:52 -04:00
|
|
|
* Retrieves the excerpt of the given comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2019-06-08 14:42:52 -04:00
|
|
|
* Returns a maximum of 20 words with an ellipsis appended if necessary.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the excerpt.
|
2022-12-12 06:51:11 -05:00
|
|
|
* Default current comment.
|
2019-06-08 14:42:52 -04:00
|
|
|
* @return string The possibly truncated comment excerpt.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_excerpt( $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2020-06-10 15:20:11 -04:00
|
|
|
|
|
|
|
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' );
|
|
|
|
}
|
2019-06-08 14:42:52 -04:00
|
|
|
|
|
|
|
/* translators: Maximum number of words used in a comment excerpt. */
|
2020-10-08 17:15:13 -04:00
|
|
|
$comment_excerpt_length = (int) _x( '20', 'comment_excerpt_length' );
|
2014-10-29 15:07:22 -04:00
|
|
|
|
2015-09-24 17:05:25 -04:00
|
|
|
/**
|
2019-06-08 14:42:52 -04:00
|
|
|
* Filters the maximum number of words used in the comment excerpt.
|
2015-09-24 17:05:25 -04:00
|
|
|
*
|
|
|
|
* @since 4.4.0
|
|
|
|
*
|
|
|
|
* @param int $comment_excerpt_length The amount of words you want to display in the comment excerpt.
|
|
|
|
*/
|
2019-06-08 14:42:52 -04:00
|
|
|
$comment_excerpt_length = apply_filters( 'comment_excerpt_length', $comment_excerpt_length );
|
2014-10-29 15:07:22 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_excerpt = wp_trim_words( $comment_text, $comment_excerpt_length, '…' );
|
2014-04-11 20:01:15 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the retrieved comment excerpt.
|
2014-04-11 20:01:15 -04:00
|
|
|
*
|
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2014-04-11 20:01:15 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2014-04-11 20:01:15 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_excerpt', $comment_excerpt, $comment->comment_ID, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the excerpt of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.2.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-25 12:34:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the excerpt.
|
2022-12-12 06:51:11 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_excerpt( $comment_id = 0 ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment( $comment_id );
|
|
|
|
|
2015-09-10 14:10:25 -04:00
|
|
|
$comment_excerpt = get_comment_excerpt( $comment );
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment excerpt for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
Update the changelogs for the comment hook parameters added in [30092].
Parameters were added to the `get_comment_author`, `comment_author`, `get_comment_author_email`, `author_email`, `comment_email`, `get_comment_author_link`, `get_comment_author_IP`, `get_comment_author_url`, `comment_url`, `get_comment_excerpt`, `comment_excerpt`, `get_comment_ID`, and `get_comment_type` filters.
Fixes #22380.
Built from https://develop.svn.wordpress.org/trunk@30111
git-svn-id: http://core.svn.wordpress.org/trunk@30111 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-29 23:52:22 -04:00
|
|
|
* @param string $comment_excerpt The comment excerpt text.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2015-09-10 14:10:25 -04:00
|
|
|
echo apply_filters( 'comment_excerpt', $comment_excerpt, $comment->comment_ID );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2020-06-20 08:02:12 -04:00
|
|
|
* Retrieves the comment ID of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2021-11-18 08:57:01 -05:00
|
|
|
* @return string The comment ID as a numeric string.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2019-07-01 04:01:57 -04:00
|
|
|
function get_comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment = get_comment();
|
|
|
|
|
2023-02-12 13:08:21 -05:00
|
|
|
$comment_id = ! empty( $comment->comment_ID ) ? $comment->comment_ID : '0';
|
2014-11-28 06:22:23 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment ID.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2021-11-18 08:57:01 -05:00
|
|
|
* @since 4.1.0 The `$comment` parameter was added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param string $comment_id The current comment ID as a numeric string.
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
return apply_filters( 'get_comment_ID', $comment_id, $comment ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2020-06-20 08:02:12 -04:00
|
|
|
* Displays the comment ID of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
|
|
|
*/
|
2019-07-01 04:01:57 -04:00
|
|
|
function comment_ID() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
|
2006-04-19 06:13:28 -04:00
|
|
|
echo get_comment_ID();
|
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the link to a given comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2015-10-01 01:13:25 -04:00
|
|
|
* @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. Added `$cpage` argument.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see get_page_of_comment()
|
|
|
|
*
|
2019-08-03 21:19:56 -04:00
|
|
|
* @global WP_Rewrite $wp_rewrite WordPress rewrite component.
|
2015-05-24 01:19:24 -04:00
|
|
|
* @global bool $in_comment_loop
|
|
|
|
*
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param WP_Comment|int|null $comment Optional. Comment to retrieve. Default current comment.
|
2015-09-30 00:13:25 -04:00
|
|
|
* @param array $args {
|
|
|
|
* An array of optional arguments to override the defaults.
|
|
|
|
*
|
2016-05-02 00:00:28 -04:00
|
|
|
* @type string $type Passed to get_page_of_comment().
|
2015-10-01 01:13:25 -04:00
|
|
|
* @type int $page Current page of comments, for calculating comment pagination.
|
|
|
|
* @type int $per_page Per-page value for comment pagination.
|
2016-05-02 00:00:28 -04:00
|
|
|
* @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`.
|
2015-09-30 00:13:25 -04:00
|
|
|
* }
|
2009-03-13 17:58:18 -04:00
|
|
|
* @return string The permalink to the given comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2008-11-20 01:41:55 -05:00
|
|
|
function get_comment_link( $comment = null, $args = array() ) {
|
|
|
|
global $wp_rewrite, $in_comment_loop;
|
2008-10-27 12:31:26 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$comment = get_comment( $comment );
|
2008-10-27 12:31:26 -04:00
|
|
|
|
2016-05-13 14:41:31 -04:00
|
|
|
// Back-compat.
|
2014-03-27 22:38:14 -04:00
|
|
|
if ( ! is_array( $args ) ) {
|
|
|
|
$args = array( 'page' => $args );
|
2008-11-20 01:41:55 -05:00
|
|
|
}
|
|
|
|
|
2015-10-01 01:13:25 -04:00
|
|
|
$defaults = array(
|
|
|
|
'type' => 'all',
|
|
|
|
'page' => '',
|
|
|
|
'per_page' => '',
|
|
|
|
'max_depth' => '',
|
|
|
|
'cpage' => null,
|
|
|
|
);
|
2008-11-20 01:41:55 -05:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$args = wp_parse_args( $args, $defaults );
|
|
|
|
|
|
|
|
$comment_link = get_permalink( $comment->comment_post_ID );
|
2015-10-01 01:13:25 -04:00
|
|
|
|
|
|
|
// The 'cpage' param takes precedence.
|
|
|
|
if ( ! is_null( $args['cpage'] ) ) {
|
|
|
|
$cpage = $args['cpage'];
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
// No 'cpage' is provided, so we calculate one.
|
2015-10-01 01:13:25 -04:00
|
|
|
} else {
|
2015-10-21 12:26:42 -04:00
|
|
|
if ( '' === $args['per_page'] && get_option( 'page_comments' ) ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$args['per_page'] = get_option( 'comments_per_page' );
|
2015-10-01 01:13:25 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
if ( empty( $args['per_page'] ) ) {
|
|
|
|
$args['per_page'] = 0;
|
2017-11-30 18:11:00 -05:00
|
|
|
$args['page'] = 0;
|
2015-10-01 01:13:25 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
$cpage = $args['page'];
|
2008-11-20 01:41:55 -05:00
|
|
|
|
2024-10-06 12:56:19 -04:00
|
|
|
if ( '' === $cpage ) {
|
2015-10-01 01:13:25 -04:00
|
|
|
if ( ! empty( $in_comment_loop ) ) {
|
2024-10-06 12:56:19 -04:00
|
|
|
$cpage = (int) get_query_var( 'cpage' );
|
2015-10-01 01:13:25 -04:00
|
|
|
} 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 = '';
|
|
|
|
}
|
2008-11-20 01:41:55 -05:00
|
|
|
}
|
|
|
|
|
2015-12-14 14:46:46 -05:00
|
|
|
if ( $cpage && get_option( 'page_comments' ) ) {
|
2015-10-01 01:13:25 -04:00
|
|
|
if ( $wp_rewrite->using_permalinks() ) {
|
|
|
|
if ( $cpage ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_link = trailingslashit( $comment_link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
|
2015-10-01 01:13:25 -04:00
|
|
|
}
|
2008-10-27 12:31:26 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_link = user_trailingslashit( $comment_link, 'comment' );
|
2015-10-01 01:13:25 -04:00
|
|
|
} elseif ( $cpage ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_link = add_query_arg( 'cpage', $cpage, $comment_link );
|
2015-10-01 01:13:25 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( $wp_rewrite->using_permalinks() ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_link = user_trailingslashit( $comment_link, 'comment' );
|
2008-10-27 12:31:26 -04:00
|
|
|
}
|
2009-03-13 17:58:18 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_link = $comment_link . '#comment-' . $comment->comment_ID;
|
2015-10-01 01:13:25 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned single comment permalink.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.8.0
|
2015-10-01 01:13:25 -04:00
|
|
|
* @since 4.4.0 Added the `$cpage` parameter.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see get_page_of_comment()
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @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.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_link', $comment_link, $comment, $args, $cpage );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2015-09-16 09:52:25 -04:00
|
|
|
* Retrieves the link to the current post comments.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post.
|
2013-09-23 00:16:08 -04:00
|
|
|
* @return string The link to the comments.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function get_comments_link( $post = 0 ) {
|
|
|
|
$hash = get_comments_number( $post ) ? '#comments' : '#respond';
|
|
|
|
$comments_link = get_permalink( $post ) . $hash;
|
2015-09-16 09:52:25 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned post comments permalink.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2014-04-11 20:01:15 -04:00
|
|
|
* @since 3.6.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @param string $comments_link Post comments permalink with '#comments' appended.
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param int|WP_Post $post Post ID or WP_Post object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
return apply_filters( 'get_comments_link', $comments_link, $post );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the link to the current post comments.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @param string $deprecated Not Used.
|
2014-11-30 20:34:24 -05:00
|
|
|
* @param string $deprecated_2 Not Used.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2010-01-09 05:03:55 -05:00
|
|
|
function comments_link( $deprecated = '', $deprecated_2 = '' ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! empty( $deprecated ) ) {
|
2010-01-09 05:03:55 -05:00
|
|
|
_deprecated_argument( __FUNCTION__, '0.72' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
|
|
|
if ( ! empty( $deprecated_2 ) ) {
|
2016-07-06 08:40:29 -04:00
|
|
|
_deprecated_argument( __FUNCTION__, '1.3.0' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-03-06 14:57:31 -05:00
|
|
|
echo esc_url( get_comments_link() );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2017-08-20 16:13:47 -04:00
|
|
|
* Retrieves the amount of comments a post has.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`.
|
2017-08-20 16:13:47 -04:00
|
|
|
* @return string|int If the post exists, a numeric string representing the number of comments
|
|
|
|
* the post has, otherwise 0.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function get_comments_number( $post = 0 ) {
|
|
|
|
$post = get_post( $post );
|
2010-09-04 11:51:04 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_number = $post ? $post->comment_count : 0;
|
|
|
|
$post_id = $post ? $post->ID : 0;
|
2006-04-19 06:13:28 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment count for a post.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string|int $comments_number A string representing the number of comments a post has, otherwise 0.
|
2017-08-20 16:13:47 -04:00
|
|
|
* @param int $post_id Post ID.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comments_number', $comments_number, $post_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the language string for the number of comments the current post has.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @since 5.4.0 The `$deprecated` parameter was changed to `$post`.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param string|false $zero Optional. Text for no comments. Default false.
|
|
|
|
* @param string|false $one Optional. Text for one comment. Default false.
|
|
|
|
* @param string|false $more Optional. Text for more than one comment. Default false.
|
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function comments_number( $zero = false, $one = false, $more = false, $post = 0 ) {
|
|
|
|
echo get_comments_number_text( $zero, $one, $more, $post );
|
2014-06-29 19:13:15 -04:00
|
|
|
}
|
2009-12-30 11:23:39 -05:00
|
|
|
|
2014-06-29 19:13:15 -04:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the language string for the number of comments the current post has.
|
2014-06-29 19:13:15 -04:00
|
|
|
*
|
|
|
|
* @since 4.0.0
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @since 5.4.0 Added the `$post` parameter to allow using the function outside of the loop.
|
2014-06-29 19:13:15 -04:00
|
|
|
*
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param string $zero Optional. Text for no comments. Default false.
|
|
|
|
* @param string $one Optional. Text for one comment. Default false.
|
|
|
|
* @param string $more Optional. Text for more than one comment. Default false.
|
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is the global `$post`.
|
2020-02-11 15:41:05 -05:00
|
|
|
* @return string Language string for the number of comments a post has.
|
2014-06-29 19:13:15 -04:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function get_comments_number_text( $zero = false, $one = false, $more = false, $post = 0 ) {
|
2024-12-08 18:43:21 -05:00
|
|
|
$comments_number = (int) get_comments_number( $post );
|
2006-11-19 02:45:28 -05:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
if ( $comments_number > 1 ) {
|
2015-11-05 10:36:28 -05:00
|
|
|
if ( false === $more ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_number_text = sprintf(
|
|
|
|
/* translators: %s: Number of comments. */
|
|
|
|
_n( '%s Comment', '%s Comments', $comments_number ),
|
|
|
|
number_format_i18n( $comments_number )
|
|
|
|
);
|
2015-11-05 10:36:28 -05:00
|
|
|
} else {
|
|
|
|
// % Comments
|
2019-09-02 20:41:05 -04:00
|
|
|
/*
|
|
|
|
* translators: If comment number in your language requires declension,
|
2016-07-06 10:46:32 -04:00
|
|
|
* translate this to 'on'. Do not translate into your own language.
|
|
|
|
*/
|
|
|
|
if ( 'on' === _x( 'off', 'Comment number declension: on or off' ) ) {
|
|
|
|
$text = preg_replace( '#<span class="screen-reader-text">.+?</span>#', '', $more );
|
2023-02-15 08:06:21 -05:00
|
|
|
$text = preg_replace( '/&.+?;/', '', $text ); // Remove HTML entities.
|
2016-07-06 10:46:32 -04:00
|
|
|
$text = trim( strip_tags( $text ), '% ' );
|
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Replace '% Comments' with a proper plural form.
|
Code Modernization: Replace usage of `strpos()` with `str_contains()`.
`str_contains()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) contains the given substring (needle).
WordPress core includes a polyfill for `str_contains()` on PHP < 8.0 as of WordPress 5.9.
This commit replaces `false !== strpos( ... )` with `str_contains()` in core files, making the code more readable and consistent, as well as better aligned with modern development practices.
Follow-up to [52039], [52040], [52326], [55703], [55710], [55987].
Props Soean, spacedmonkey, costdev, dingo_d, azaozz, mikeschroder, flixos90, peterwilsoncc, SergeyBiryukov.
Fixes #58206.
Built from https://develop.svn.wordpress.org/trunk@55988
git-svn-id: http://core.svn.wordpress.org/trunk@55500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-22 10:36:26 -04:00
|
|
|
if ( $text && ! preg_match( '/[0-9]+/', $text ) && str_contains( $more, '%' ) ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Number of comments. */
|
2023-04-19 10:40:19 -04:00
|
|
|
$new_text = _n( '%s Comment', '%s Comments', $comments_number );
|
2016-07-06 10:46:32 -04:00
|
|
|
$new_text = trim( sprintf( $new_text, '' ) );
|
|
|
|
|
|
|
|
$more = str_replace( $text, $new_text, $more );
|
Code Modernization: Replace usage of `strpos()` with `str_contains()`.
`str_contains()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) contains the given substring (needle).
WordPress core includes a polyfill for `str_contains()` on PHP < 8.0 as of WordPress 5.9.
This commit replaces `false !== strpos( ... )` with `str_contains()` in core files, making the code more readable and consistent, as well as better aligned with modern development practices.
Follow-up to [52039], [52040], [52326], [55703], [55710], [55987].
Props Soean, spacedmonkey, costdev, dingo_d, azaozz, mikeschroder, flixos90, peterwilsoncc, SergeyBiryukov.
Fixes #58206.
Built from https://develop.svn.wordpress.org/trunk@55988
git-svn-id: http://core.svn.wordpress.org/trunk@55500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-22 10:36:26 -04:00
|
|
|
if ( ! str_contains( $more, '%' ) ) {
|
2016-07-06 10:46:32 -04:00
|
|
|
$more = '% ' . $more;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_number_text = str_replace( '%', number_format_i18n( $comments_number ), $more );
|
2015-11-05 10:36:28 -05:00
|
|
|
}
|
2024-12-08 18:43:21 -05:00
|
|
|
} elseif ( 0 === $comments_number ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_number_text = ( false === $zero ) ? __( 'No Comments' ) : $zero;
|
2020-01-28 19:45:18 -05:00
|
|
|
} else { // Must be one.
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_number_text = ( false === $one ) ? __( '1 Comment' ) : $one;
|
2014-06-29 19:13:15 -04:00
|
|
|
}
|
2023-04-19 10:40:19 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comments count for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see _n()
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comments_number_text A translatable string formatted based on whether the count
|
|
|
|
* is equal to 0, 1, or 1+.
|
|
|
|
* @param int $comments_number The number of post comments.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'comments_number', $comments_number_text, $comments_number );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the text of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2020-01-26 17:29:06 -05:00
|
|
|
* @since 5.4.0 Added 'In reply to %s.' prefix to child comments in comments feed.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see Walker_Comment::comment()
|
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the text.
|
2020-07-23 17:11:05 -04:00
|
|
|
* Default current comment.
|
|
|
|
* @param array $args Optional. An array of arguments. Default empty array.
|
2013-09-21 14:18:09 -04:00
|
|
|
* @return string The comment content.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_text( $comment_id = 0, $args = array() ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2013-09-21 14:18:09 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_text = $comment->comment_content;
|
2020-01-26 17:29:06 -05:00
|
|
|
|
|
|
|
if ( is_comment_feed() && $comment->comment_parent ) {
|
|
|
|
$parent = get_comment( $comment->comment_parent );
|
|
|
|
if ( $parent ) {
|
|
|
|
$parent_link = esc_url( get_comment_link( $parent ) );
|
|
|
|
$name = get_comment_author( $parent );
|
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_text = sprintf(
|
2020-01-26 17:29:06 -05:00
|
|
|
/* translators: %s: Comment link. */
|
|
|
|
ent2ncr( __( 'In reply to %s.' ) ),
|
|
|
|
'<a href="' . $parent_link . '">' . $name . '</a>'
|
2023-04-19 10:40:19 -04:00
|
|
|
) . "\n\n" . $comment_text;
|
2020-01-26 17:29:06 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-09-21 14:18:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the text of a comment.
|
2013-09-21 14:18:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-21 14:18:09 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see Walker_Comment::comment()
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_text Text of the comment.
|
|
|
|
* @param WP_Comment $comment The comment object.
|
|
|
|
* @param array $args An array of arguments.
|
2013-09-21 14:18:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_text', $comment_text, $comment, $args );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the text of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2010-01-25 12:34:13 -05:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see Walker_Comment::comment()
|
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the text.
|
2020-07-23 17:11:05 -04:00
|
|
|
* Default current comment.
|
|
|
|
* @param array $args Optional. An array of arguments. Default empty array.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_text( $comment_id = 0, $args = array() ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2013-09-21 14:18:09 -04:00
|
|
|
|
2015-09-11 22:28:26 -04:00
|
|
|
$comment_text = get_comment_text( $comment, $args );
|
2023-04-19 10:40:19 -04:00
|
|
|
|
2013-09-21 14:18:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the text of a comment to be displayed.
|
2013-09-21 14:18:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.2.0
|
2013-09-21 14:18:09 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see Walker_Comment::comment()
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_text Text of the comment.
|
2020-06-02 17:45:10 -04:00
|
|
|
* @param WP_Comment|null $comment The comment object. Null if not found.
|
2017-05-13 23:06:45 -04:00
|
|
|
* @param array $args An array of arguments.
|
2013-09-21 14:18:09 -04:00
|
|
|
*/
|
|
|
|
echo apply_filters( 'comment_text', $comment_text, $comment, $args );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the comment time of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 6.2.0 Added the `$comment_id` parameter.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-07 12:53:18 -05:00
|
|
|
* @param string $format Optional. PHP date format. Defaults to the 'time_format' option.
|
|
|
|
* @param bool $gmt Optional. Whether to use the GMT date. Default false.
|
|
|
|
* @param bool $translate Optional. Whether to translate the time (for use in feeds).
|
|
|
|
* Default true.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the time.
|
2023-02-07 13:26:18 -05:00
|
|
|
* Default current comment.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @return string The formatted time.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_time( $format = '', $gmt = false, $translate = true, $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2023-02-07 12:53:18 -05:00
|
|
|
|
|
|
|
if ( null === $comment ) {
|
|
|
|
return '';
|
|
|
|
}
|
2015-09-08 22:51:24 -04:00
|
|
|
|
2009-12-14 05:21:58 -05:00
|
|
|
$comment_date = $gmt ? $comment->comment_date_gmt : $comment->comment_date;
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2020-08-31 14:30:05 -04:00
|
|
|
$_format = ! empty( $format ) ? $format : get_option( 'time_format' );
|
2013-09-23 17:21:09 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_time = mysql2date( $_format, $comment_date, $translate );
|
2020-08-31 11:58:04 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment time.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string|int $comment_time The comment time, formatted as a date string or Unix timestamp.
|
|
|
|
* @param string $format PHP date format.
|
|
|
|
* @param bool $gmt Whether the GMT date is in use.
|
|
|
|
* @param bool $translate Whether the time is translated.
|
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'get_comment_time', $comment_time, $format, $gmt, $translate, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the comment time of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 6.2.0 Added the `$comment_id` parameter.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-07 13:26:18 -05:00
|
|
|
* @param string $format Optional. PHP time format. Defaults to the 'time_format' option.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to print the time.
|
2023-02-07 13:26:18 -05:00
|
|
|
* Default current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function comment_time( $format = '', $comment_id = 0 ) {
|
Comments: Add missing arguments for `get_comment_time()` in `comment_time()`.
In a recent change, `comment_time()` was updated to accept a `$comment_id` parameter for consistency with `comment_date()`, following a similar change for `get_comment_time()`.
However, the new parameter was not correctly passed to `get_comment_time()` inside the function. It should be passed as the fourth parameter after `$format`, `$gmt` and `$translate`, not the second.
This commit adds the missing arguments and a few unit tests to confirm the correct behavior.
Follow-up to [55284], [55287], [55308].
Props costdev, tmatsuur, ugyensupport, johnbillion.
Fixes #58064.
Built from https://develop.svn.wordpress.org/trunk@55632
git-svn-id: http://core.svn.wordpress.org/trunk@55144 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-04-07 10:36:21 -04:00
|
|
|
echo get_comment_time( $format, false, true, $comment_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the comment type of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param int|WP_Comment $comment_id Optional. WP_Comment or ID of the comment for which to get the type.
|
2015-09-16 09:52:25 -04:00
|
|
|
* Default current comment.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @return string The comment type.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2023-02-12 13:08:21 -05:00
|
|
|
function get_comment_type( $comment_id = 0 ) {
|
|
|
|
$comment = get_comment( $comment_id );
|
2020-05-16 14:42:12 -04:00
|
|
|
|
|
|
|
if ( '' === $comment->comment_type ) {
|
2006-04-19 06:13:28 -04:00
|
|
|
$comment->comment_type = 'comment';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned comment type.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2023-02-12 13:08:21 -05:00
|
|
|
* @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param string $comment_type The type of comment, such as 'comment', 'pingback', or 'trackback'.
|
2023-02-12 13:08:21 -05:00
|
|
|
* @param string $comment_id The comment ID as a numeric string.
|
2015-09-03 14:17:24 -04:00
|
|
|
* @param WP_Comment $comment The comment object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2015-09-10 14:10:25 -04:00
|
|
|
return apply_filters( 'get_comment_type', $comment->comment_type, $comment->comment_ID, $comment );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the comment type of the current comment.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
|
|
|
*
|
2021-01-05 12:16:11 -05:00
|
|
|
* @param string|false $commenttxt Optional. String to display for comment type. Default false.
|
|
|
|
* @param string|false $trackbacktxt Optional. String to display for trackback type. Default false.
|
|
|
|
* @param string|false $pingbacktxt Optional. String to display for pingback type. Default false.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2013-09-23 00:16:08 -04:00
|
|
|
function comment_type( $commenttxt = false, $trackbacktxt = false, $pingbacktxt = false ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( false === $commenttxt ) {
|
|
|
|
$commenttxt = _x( 'Comment', 'noun' );
|
|
|
|
}
|
|
|
|
if ( false === $trackbacktxt ) {
|
|
|
|
$trackbacktxt = __( 'Trackback' );
|
|
|
|
}
|
|
|
|
if ( false === $pingbacktxt ) {
|
|
|
|
$pingbacktxt = __( 'Pingback' );
|
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
$type = get_comment_type();
|
2017-11-30 18:11:00 -05:00
|
|
|
switch ( $type ) {
|
|
|
|
case 'trackback':
|
2006-04-19 06:13:28 -04:00
|
|
|
echo $trackbacktxt;
|
|
|
|
break;
|
2017-11-30 18:11:00 -05:00
|
|
|
case 'pingback':
|
2006-04-19 06:13:28 -04:00
|
|
|
echo $pingbacktxt;
|
|
|
|
break;
|
2017-11-30 18:11:00 -05:00
|
|
|
default:
|
2006-04-19 06:13:28 -04:00
|
|
|
echo $commenttxt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves the current post's trackback URL.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* There is a check to see if permalink's have been enabled and if so, will
|
|
|
|
* retrieve the pretty path. If permalinks weren't enabled, the ID of the
|
|
|
|
* current post is used and appended to the correct page to go to.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @return string The trackback URL after being filtered.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2006-04-19 06:13:28 -04:00
|
|
|
function get_trackback_url() {
|
2020-05-16 14:42:12 -04:00
|
|
|
if ( get_option( 'permalink_structure' ) ) {
|
2022-07-19 10:02:10 -04:00
|
|
|
$trackback_url = trailingslashit( get_permalink() ) . user_trailingslashit( 'trackback', 'single_trackback' );
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
2022-07-19 10:02:10 -04:00
|
|
|
$trackback_url = get_option( 'siteurl' ) . '/wp-trackback.php?p=' . get_the_ID();
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the returned trackback URL.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.2.0
|
|
|
|
*
|
2022-07-19 10:02:10 -04:00
|
|
|
* @param string $trackback_url The trackback URL.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2022-07-19 10:02:10 -04:00
|
|
|
return apply_filters( 'trackback_url', $trackback_url );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
2007-08-29 19:08:44 -04:00
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays the current post's trackback URL.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* @since 0.71
|
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @param bool $deprecated_echo Not used.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @return void|string Should only be used to echo the trackback URL, use get_trackback_url()
|
|
|
|
* for the result instead.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2009-12-30 11:23:39 -05:00
|
|
|
function trackback_url( $deprecated_echo = true ) {
|
2015-11-05 18:39:25 -05:00
|
|
|
if ( true !== $deprecated_echo ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
_deprecated_argument(
|
2018-08-16 21:51:36 -04:00
|
|
|
__FUNCTION__,
|
|
|
|
'2.5.0',
|
2017-11-30 18:11:00 -05:00
|
|
|
sprintf(
|
I18N: Improve translator comments.
* Add missing translator comments.
* Fix placement of some translator comments. Translator comments should be on the line directly above the line containing the translation function call for optimal compatibility with various `.pot` file generation tools. The CS auto-fixing, which changed some inconsistent function calls to multi-line function calls, is part of the reason why this was no longer the case for a select group of translator comments.
Includes minor code layout fixes.
Polyglots, rejoice! All WordPress core files now have translator comments for all strings with placeholders!
Props jrf, subrataemfluence, GaryJ, webdados, Dency, swissspidy, alvarogois, marcomartins, mihaiiceyro, vladwtz, niq1982, flipkeijzer, michielatyoast, chandrapatel, thrijith, joshuanoyce, FesoVik, tessak22, bhaktirajdev, cleancoded, dhavalkasvala, garrett-eclipse, bibliofille, socalchristina, priyankkpatel, 5hel2l2y, adamsilverstein, JeffPaul, pierlo, SergeyBiryukov.
Fixes #44360.
Built from https://develop.svn.wordpress.org/trunk@45926
git-svn-id: http://core.svn.wordpress.org/trunk@45737 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-09-01 13:13:59 -04:00
|
|
|
/* translators: %s: get_trackback_url() */
|
2017-11-30 18:11:00 -05:00
|
|
|
__( 'Use %s instead if you do not want the value echoed.' ),
|
2015-11-05 18:39:25 -05:00
|
|
|
'<code>get_trackback_url()</code>'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( $deprecated_echo ) {
|
2009-12-30 11:23:39 -05:00
|
|
|
echo get_trackback_url();
|
2015-11-05 18:39:25 -05:00
|
|
|
} else {
|
2009-12-30 11:23:39 -05:00
|
|
|
return get_trackback_url();
|
2015-11-05 18:39:25 -05:00
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2010-07-03 01:55:04 -04:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Generates and displays the RDF for the trackback information of current post.
|
2010-07-03 01:55:04 -04:00
|
|
|
*
|
|
|
|
* Deprecated in 3.0.0, and restored in 3.0.1.
|
|
|
|
*
|
|
|
|
* @since 0.71
|
|
|
|
*
|
2021-01-05 12:16:11 -05:00
|
|
|
* @param int|string $deprecated Not used (Was $timezone = 0).
|
2010-07-03 01:55:04 -04:00
|
|
|
*/
|
|
|
|
function trackback_rdf( $deprecated = '' ) {
|
2014-03-12 08:54:15 -04:00
|
|
|
if ( ! empty( $deprecated ) ) {
|
2016-07-06 08:40:29 -04:00
|
|
|
_deprecated_argument( __FUNCTION__, '2.5.0' );
|
2014-03-12 08:54:15 -04:00
|
|
|
}
|
2010-07-03 01:55:04 -04:00
|
|
|
|
2014-03-12 08:54:15 -04:00
|
|
|
if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && false !== stripos( $_SERVER['HTTP_USER_AGENT'], 'W3C_Validator' ) ) {
|
2010-07-03 01:55:04 -04:00
|
|
|
return;
|
2014-03-12 08:54:15 -04:00
|
|
|
}
|
2010-07-03 01:55:04 -04:00
|
|
|
|
|
|
|
echo '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
|
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
|
|
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
|
|
|
|
<rdf:Description rdf:about="';
|
|
|
|
the_permalink();
|
2017-11-30 18:11:00 -05:00
|
|
|
echo '"' . "\n";
|
2010-07-03 01:55:04 -04:00
|
|
|
echo ' dc:identifier="';
|
|
|
|
the_permalink();
|
2017-11-30 18:11:00 -05:00
|
|
|
echo '"' . "\n";
|
|
|
|
echo ' dc:title="' . str_replace( '--', '--', wptexturize( strip_tags( get_the_title() ) ) ) . '"' . "\n";
|
|
|
|
echo ' trackback:ping="' . get_trackback_url() . '"' . " />\n";
|
2010-07-03 01:55:04 -04:00
|
|
|
echo '</rdf:RDF>';
|
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2018-02-13 11:54:31 -05:00
|
|
|
* Determines whether the current post is open for comments.
|
2018-03-18 10:23:33 -04:00
|
|
|
*
|
2018-02-13 11:54:31 -05:00
|
|
|
* For more information on this and similar theme functions, check out
|
2018-03-18 10:23:33 -04:00
|
|
|
* the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
|
2018-02-13 11:54:31 -05:00
|
|
|
* Conditional Tags} article in the Theme Developer Handbook.
|
2018-03-18 10:23:33 -04:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post.
|
2013-09-23 00:16:08 -04:00
|
|
|
* @return bool True if the comments are open.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function comments_open( $post = null ) {
|
|
|
|
$_post = get_post( $post );
|
2008-02-05 01:47:27 -05:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$post_id = $_post ? $_post->ID : 0;
|
|
|
|
$comments_open = ( $_post && ( 'open' === $_post->comment_status ) );
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters whether the current post is open for comments.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2014-04-11 20:01:15 -04:00
|
|
|
* @since 2.5.0
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param bool $comments_open Whether the current post is open for comments.
|
|
|
|
* @param int $post_id The post ID.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'comments_open', $comments_open, $post_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2018-02-13 11:54:31 -05:00
|
|
|
* Determines whether the current post is open for pings.
|
2018-03-18 10:23:33 -04:00
|
|
|
*
|
2018-02-13 11:54:31 -05:00
|
|
|
* For more information on this and similar theme functions, check out
|
2018-03-18 10:23:33 -04:00
|
|
|
* the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
|
2018-02-13 11:54:31 -05:00
|
|
|
* Conditional Tags} article in the Theme Developer Handbook.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 1.5.0
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default current post.
|
2007-12-26 12:18:13 -05:00
|
|
|
* @return bool True if pings are accepted
|
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function pings_open( $post = null ) {
|
|
|
|
$_post = get_post( $post );
|
2008-02-04 15:27:45 -05:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$post_id = $_post ? $_post->ID : 0;
|
|
|
|
$pings_open = ( $_post && ( 'open' === $_post->ping_status ) );
|
2014-04-11 20:01:15 -04:00
|
|
|
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters whether the current post is open for pings.
|
2014-04-11 20:01:15 -04:00
|
|
|
*
|
|
|
|
* @since 2.5.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param bool $pings_open Whether the current post is open for pings.
|
|
|
|
* @param int $post_id The post ID.
|
2014-04-11 20:01:15 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'pings_open', $pings_open, $post_id );
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays form token for unfiltered comments.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* Will only display nonce token if the current user has permissions for
|
|
|
|
* unfiltered html. Won't display the token for other users.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* The function was backported to 2.0.10 and was added to versions 2.1.3 and
|
|
|
|
* above. Does not exist in versions prior to 2.0.10 in the 2.0 branch and in
|
|
|
|
* the 2.1 branch, prior to 2.1.3. Technically added in 2.2.0.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* Backported to 2.0.10.
|
|
|
|
*
|
2007-12-26 12:18:13 -05:00
|
|
|
* @since 2.1.3
|
|
|
|
*/
|
2007-03-14 19:10:57 -04:00
|
|
|
function wp_comment_form_unfiltered_html_nonce() {
|
2017-11-30 18:11:00 -05:00
|
|
|
$post = get_post();
|
2012-09-04 12:29:28 -04:00
|
|
|
$post_id = $post ? $post->ID : 0;
|
2008-11-05 20:58:33 -05:00
|
|
|
|
2012-06-01 16:47:08 -04:00
|
|
|
if ( current_user_can( 'unfiltered_html' ) ) {
|
|
|
|
wp_nonce_field( 'unfiltered-html-comment_' . $post_id, '_wp_unfiltered_html_comment_disabled', false );
|
Script Loader: Use `wp_get_script_tag()` and `wp_get_inline_script_tag()`/`wp_print_inline_script_tag()` helper functions to output scripts on the frontend and login screen.
Using script tag helper functions allows plugins to employ the `wp_script_attributes` and `wp_inline_script_attributes` filters to inject the `nonce` attribute to apply Content Security Policy (e.g. Strict CSP). Use of helper functions also simplifies logic in `WP_Scripts`.
* Update `wp_get_inline_script_tag()` to wrap inline script in CDATA blocks for XHTML-compatibility when not using HTML5.
* Ensure the `type` attribute is printed first in `wp_get_inline_script_tag()` for back-compat.
* Wrap existing `<script>` tags in output buffering to retain IDE supports.
* In `wp_get_inline_script_tag()`, append the newline to `$javascript` before it is passed into the `wp_inline_script_attributes` filter so that the CSP hash can be computed properly.
* In `the_block_template_skip_link()`, opt to enqueue the inline script rather than print it.
* Add `ext-php` to `composer.json` under `suggest` as previously it was an undeclared dependency for running PHPUnit tests.
* Update tests to rely on `DOMDocument` to compare script markup, normalizing unsemantic differences.
Props westonruter, spacedmonkey, flixos90, 10upsimon, dmsnell, mukesh27, joemcgill, swissspidy, azaozz.
Fixes #58664.
See #39941.
Built from https://develop.svn.wordpress.org/trunk@56687
git-svn-id: http://core.svn.wordpress.org/trunk@56199 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-25 17:05:21 -04:00
|
|
|
wp_print_inline_script_tag( "(function(){if(window===window.parent){document.getElementById('_wp_unfiltered_html_comment_disabled').name='_wp_unfiltered_html_comment';}})();" );
|
2012-06-01 16:47:08 -04:00
|
|
|
}
|
2007-03-14 19:10:57 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Loads the comment template specified in $file.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2008-06-22 16:23:23 -04:00
|
|
|
* Will not display the comments template if not on single post or page, or if
|
|
|
|
* the post does not have comments.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
|
|
|
* Uses the WordPress database object to query for the comments. The comments
|
2016-05-23 14:59:27 -04:00
|
|
|
* are passed through the {@see 'comments_array'} filter hook with the list of comments
|
2007-12-26 12:18:13 -05:00
|
|
|
* and the post ID respectively.
|
|
|
|
*
|
2016-05-23 14:59:27 -04:00
|
|
|
* The `$file` path is passed through a filter hook called {@see 'comments_template'},
|
Themes: Deprecate usage of `TEMPLATEPATH` and `STYLESHEETPATH` constants.
While generally the functions `get_template_directory()` and `get_stylesheet_directory()` were long recommended to use to get the parent or child theme directory, the `TEMPLATEPATH` and `STYLESHEETPATH` constants were still used in a few places in core, most importantly in template related logic.
The remaining usage was problematic as it prevented testability of certain key components of WordPress core.
This changeset replaces all remaining usage with the corresponding functions and effectively marks these constants as deprecated. It also adds test coverage accordingly and even unlocks some existing, previously commented out test coverage to work as expected.
Performance of the new approach has been benchmarked and shows no notable differences. Yet, given that the current theme directories are not expected to change within a regular WordPress page load, the `get_template_directory()` and `get_stylesheet_directory()` functions were amended with in-memory caching of the result, unless one of the defining values is being filtered.
Props thekt12, spacedmonkey, mukesh27, aaroncampbell, scribu, lloydbudd, cais, chipbennett, toscho, omarabid, CrazyJaco, DrewAPicture, obenland, wonderboymusic, nacin, helen, dd32, chriscct7, SergeyBiryukov, swissspidy, joemcgill, flixos90.
Fixes #18298.
Built from https://develop.svn.wordpress.org/trunk@56635
git-svn-id: http://core.svn.wordpress.org/trunk@56147 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-09-20 13:27:23 -04:00
|
|
|
* which includes the template directory and $file combined. Tries the $filtered path
|
2011-09-03 12:02:41 -04:00
|
|
|
* first and if it fails it will require the default comment template from the
|
2007-12-26 12:18:13 -05:00
|
|
|
* default theme. If either does not exist, then the WordPress process will be
|
|
|
|
* halted. It is advised for that reason, that the default theme is not deleted.
|
|
|
|
*
|
2015-12-23 02:53:26 -05:00
|
|
|
* Will not try to get the comments if the post has none.
|
2007-12-26 12:18:13 -05:00
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @since 1.5.0
|
|
|
|
*
|
2024-02-21 14:26:08 -05:00
|
|
|
* @global WP_Query $wp_query WordPress Query object.
|
|
|
|
* @global WP_Post $post Global post object.
|
|
|
|
* @global wpdb $wpdb WordPress database abstraction object.
|
2015-10-10 11:45:25 -04:00
|
|
|
* @global int $id
|
2024-02-21 14:26:08 -05:00
|
|
|
* @global WP_Comment $comment Global comment object.
|
2015-10-10 11:45:25 -04:00
|
|
|
* @global string $user_login
|
|
|
|
* @global string $user_identity
|
|
|
|
* @global bool $overridden_cpage
|
2016-01-27 22:35:27 -05:00
|
|
|
* @global bool $withcomments
|
2024-02-21 14:26:08 -05:00
|
|
|
* @global string $wp_stylesheet_path Path to current theme's stylesheet directory.
|
|
|
|
* @global string $wp_template_path Path to current theme's template directory.
|
2015-05-24 01:19:24 -04:00
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @param string $file Optional. The file to load. Default '/comments.php'.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @param bool $separate_comments Optional. Whether to separate the comments by comment type.
|
|
|
|
* Default false.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2008-10-06 19:16:26 -04:00
|
|
|
function comments_template( $file = '/comments.php', $separate_comments = false ) {
|
2024-02-21 14:26:08 -05:00
|
|
|
global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_identity, $overridden_cpage, $wp_stylesheet_path, $wp_template_path;
|
2006-04-19 06:13:28 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! ( is_single() || is_page() || $withcomments ) || empty( $post ) ) {
|
2006-06-22 16:52:12 -04:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2006-06-22 16:52:12 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $file ) ) {
|
2008-10-06 19:16:26 -04:00
|
|
|
$file = '/comments.php';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2010-01-26 17:49:05 -05:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$req = get_option( 'require_name_email' );
|
2016-01-30 17:13:26 -05:00
|
|
|
|
2014-02-09 22:20:12 -05:00
|
|
|
/*
|
2009-07-19 21:41:05 -04:00
|
|
|
* Comment author information fetched from the comment cookies.
|
2009-07-19 21:11:14 -04:00
|
|
|
*/
|
2006-06-22 16:52:12 -04:00
|
|
|
$commenter = wp_get_current_commenter();
|
2009-07-19 21:11:14 -04:00
|
|
|
|
2014-02-09 22:20:12 -05:00
|
|
|
/*
|
2009-07-19 21:41:05 -04:00
|
|
|
* The name of the current comment author escaped for use in attributes.
|
2014-02-09 22:20:12 -05:00
|
|
|
* Escaped by sanitize_comment_cookies().
|
2009-07-19 21:11:14 -04:00
|
|
|
*/
|
2014-02-09 22:20:12 -05:00
|
|
|
$comment_author = $commenter['comment_author'];
|
2009-07-19 21:11:14 -04:00
|
|
|
|
2014-02-09 22:20:12 -05:00
|
|
|
/*
|
2009-07-19 21:41:05 -04:00
|
|
|
* The email address of the current comment author escaped for use in attributes.
|
2014-02-09 22:20:12 -05:00
|
|
|
* Escaped by sanitize_comment_cookies().
|
2009-09-14 10:03:32 -04:00
|
|
|
*/
|
2014-02-09 22:20:12 -05:00
|
|
|
$comment_author_email = $commenter['comment_author_email'];
|
2009-07-19 21:11:14 -04:00
|
|
|
|
2014-02-09 22:20:12 -05:00
|
|
|
/*
|
2019-12-24 11:10:05 -05:00
|
|
|
* The URL of the current comment author escaped for use in attributes.
|
2009-09-14 10:03:32 -04:00
|
|
|
*/
|
2017-11-30 18:11:00 -05:00
|
|
|
$comment_author_url = esc_url( $commenter['comment_author_url'] );
|
2006-04-19 06:13:28 -04:00
|
|
|
|
Use the comment API rather than direct SQL queries in `comments_template()`.
`comments_template()` is used by most themes to display a post's comments. It
shows all comments that have been approved, and also shows all pending comments
by the current visitor (as determined by the comment cookies). However, the
comments API previously had no way of querying for "all comments that are
either approved, or are unapproved but written by foo@example.com". The
workaround was a direct SQL query: uncached, not subject to the same filters as
other comment queries, and just generally icky.
The new `include_unapproved` parameter for `WP_Comment_Query` accepts an array
of user IDs or email addresses. Pending comments associated with users in this
array will be included in query results, regardless of the value of the 'status'
parameter. In `comments_template()`, we leap from direct SQL queries to
`get_comments()` plus `include_unapproved', striving to put right what once
went wrong.
Props boonebgorges, simonwheatley, hardy101, jesin.
Fixes #19623.
Built from https://develop.svn.wordpress.org/trunk@29965
git-svn-id: http://core.svn.wordpress.org/trunk@29712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 15:39:20 -04:00
|
|
|
$comment_args = array(
|
Comments: Always lazily load comment meta.
In [34270] introduced lazy loading of comment meta. However, this was only in the context of `WP_Query`. Other parts of the codebase, like `WP_Comment_Query` did not lazily load comment meta. In this change, calls to `update_meta_cache` are now replaced with `wp_lazyload_comment_meta`, that instead of priming comment meta caches, just adds them to the queue to be primed it ever called. This results in far less database queries, as there a number of places where comment meta is being primed unnecessarily and never used. Adding everything to the comment meta queue, also means that if comment meta is used, that is all loaded in a single database / cache call.
Follow on from [55671], [55747].
Props spacedmonkey, peterwilsoncc, flixos90, mukesh27.
Fixes #57801.
Built from https://develop.svn.wordpress.org/trunk@55749
git-svn-id: http://core.svn.wordpress.org/trunk@55261 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-05-11 08:27:22 -04:00
|
|
|
'orderby' => 'comment_date_gmt',
|
|
|
|
'order' => 'ASC',
|
|
|
|
'status' => 'approve',
|
|
|
|
'post_id' => $post->ID,
|
|
|
|
'no_found_rows' => false,
|
Use the comment API rather than direct SQL queries in `comments_template()`.
`comments_template()` is used by most themes to display a post's comments. It
shows all comments that have been approved, and also shows all pending comments
by the current visitor (as determined by the comment cookies). However, the
comments API previously had no way of querying for "all comments that are
either approved, or are unapproved but written by foo@example.com". The
workaround was a direct SQL query: uncached, not subject to the same filters as
other comment queries, and just generally icky.
The new `include_unapproved` parameter for `WP_Comment_Query` accepts an array
of user IDs or email addresses. Pending comments associated with users in this
array will be included in query results, regardless of the value of the 'status'
parameter. In `comments_template()`, we leap from direct SQL queries to
`get_comments()` plus `include_unapproved', striving to put right what once
went wrong.
Props boonebgorges, simonwheatley, hardy101, jesin.
Fixes #19623.
Built from https://develop.svn.wordpress.org/trunk@29965
git-svn-id: http://core.svn.wordpress.org/trunk@29712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 15:39:20 -04:00
|
|
|
);
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( get_option( 'thread_comments' ) ) {
|
2016-01-08 17:17:26 -05:00
|
|
|
$comment_args['hierarchical'] = 'threaded';
|
|
|
|
} else {
|
|
|
|
$comment_args['hierarchical'] = false;
|
|
|
|
}
|
|
|
|
|
2020-06-23 09:53:08 -04:00
|
|
|
if ( is_user_logged_in() ) {
|
|
|
|
$comment_args['include_unapproved'] = array( get_current_user_id() );
|
|
|
|
} else {
|
|
|
|
$unapproved_email = wp_get_unapproved_comment_author_email();
|
|
|
|
|
|
|
|
if ( $unapproved_email ) {
|
|
|
|
$comment_args['include_unapproved'] = array( $unapproved_email );
|
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2015-10-21 12:26:42 -04:00
|
|
|
$per_page = 0;
|
|
|
|
if ( get_option( 'page_comments' ) ) {
|
|
|
|
$per_page = (int) get_query_var( 'comments_per_page' );
|
|
|
|
if ( 0 === $per_page ) {
|
|
|
|
$per_page = (int) get_option( 'comments_per_page' );
|
|
|
|
}
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
|
2015-10-21 12:26:42 -04:00
|
|
|
$comment_args['number'] = $per_page;
|
2017-11-30 18:11:00 -05:00
|
|
|
$page = (int) get_query_var( 'cpage' );
|
2015-09-28 15:30:26 -04:00
|
|
|
|
2015-10-21 12:26:42 -04:00
|
|
|
if ( $page ) {
|
|
|
|
$comment_args['offset'] = ( $page - 1 ) * $per_page;
|
|
|
|
} elseif ( 'oldest' === get_option( 'default_comments_page' ) ) {
|
|
|
|
$comment_args['offset'] = 0;
|
|
|
|
} else {
|
|
|
|
// If fetching the first page of 'newest', we need a top-level comment count.
|
|
|
|
$top_level_query = new WP_Comment_Query();
|
2015-12-20 22:07:32 -05:00
|
|
|
$top_level_args = array(
|
2015-10-21 12:26:42 -04:00
|
|
|
'count' => true,
|
|
|
|
'orderby' => false,
|
|
|
|
'post_id' => $post->ID,
|
2015-12-20 22:07:32 -05:00
|
|
|
'status' => 'approve',
|
|
|
|
);
|
|
|
|
|
2016-01-12 22:13:25 -05:00
|
|
|
if ( $comment_args['hierarchical'] ) {
|
|
|
|
$top_level_args['parent'] = 0;
|
|
|
|
}
|
|
|
|
|
2015-12-20 22:07:32 -05:00
|
|
|
if ( isset( $comment_args['include_unapproved'] ) ) {
|
|
|
|
$top_level_args['include_unapproved'] = $comment_args['include_unapproved'];
|
|
|
|
}
|
|
|
|
|
2020-10-20 16:11:06 -04:00
|
|
|
/**
|
|
|
|
* Filters the arguments used in the top level comments query.
|
|
|
|
*
|
|
|
|
* @since 5.6.0
|
|
|
|
*
|
|
|
|
* @see WP_Comment_Query::__construct()
|
|
|
|
*
|
|
|
|
* @param array $top_level_args {
|
|
|
|
* The top level query arguments for the comments template.
|
|
|
|
*
|
|
|
|
* @type bool $count Whether to return a comment count.
|
|
|
|
* @type string|array $orderby The field(s) to order by.
|
|
|
|
* @type int $post_id The post ID.
|
|
|
|
* @type string|array $status The comment status to limit results by.
|
|
|
|
* }
|
|
|
|
*/
|
|
|
|
$top_level_args = apply_filters( 'comments_template_top_level_query_args', $top_level_args );
|
|
|
|
|
2015-12-20 22:07:32 -05:00
|
|
|
$top_level_count = $top_level_query->query( $top_level_args );
|
2015-10-21 12:26:42 -04:00
|
|
|
|
2024-02-17 10:24:08 -05:00
|
|
|
$comment_args['offset'] = ( (int) ceil( $top_level_count / $per_page ) - 1 ) * $per_page;
|
2015-10-21 12:26:42 -04:00
|
|
|
}
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
}
|
|
|
|
|
2016-01-08 23:44:26 -05:00
|
|
|
/**
|
|
|
|
* Filters the arguments used to query comments in comments_template().
|
|
|
|
*
|
|
|
|
* @since 4.5.0
|
|
|
|
*
|
2016-03-10 00:37:27 -05:00
|
|
|
* @see WP_Comment_Query::__construct()
|
|
|
|
*
|
2016-01-08 23:44:26 -05:00
|
|
|
* @param array $comment_args {
|
2016-03-10 00:37:27 -05:00
|
|
|
* Array of WP_Comment_Query arguments.
|
2016-01-08 23:44:26 -05:00
|
|
|
*
|
|
|
|
* @type string|array $orderby Field(s) to order by.
|
|
|
|
* @type string $order Order of results. Accepts 'ASC' or 'DESC'.
|
|
|
|
* @type string $status Comment status.
|
2016-01-10 21:28:27 -05:00
|
|
|
* @type array $include_unapproved Array of IDs or email addresses whose unapproved comments
|
|
|
|
* will be included in results.
|
2016-01-08 23:44:26 -05:00
|
|
|
* @type int $post_id ID of the post.
|
|
|
|
* @type bool $no_found_rows Whether to refrain from querying for found rows.
|
|
|
|
* @type bool $update_comment_meta_cache Whether to prime cache for comment meta.
|
|
|
|
* @type bool|string $hierarchical Whether to query for comments hierarchically.
|
|
|
|
* @type int $offset Comment offset.
|
|
|
|
* @type int $number Number of comments to fetch.
|
|
|
|
* }
|
|
|
|
*/
|
2020-10-20 16:11:06 -04:00
|
|
|
$comment_args = apply_filters( 'comments_template_query_args', $comment_args );
|
|
|
|
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
$comment_query = new WP_Comment_Query( $comment_args );
|
2017-11-30 18:11:00 -05:00
|
|
|
$_comments = $comment_query->comments;
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
|
|
|
|
// Trees must be flattened before they're passed to the walker.
|
2016-01-08 17:17:26 -05:00
|
|
|
if ( $comment_args['hierarchical'] ) {
|
|
|
|
$comments_flat = array();
|
|
|
|
foreach ( $_comments as $_comment ) {
|
|
|
|
$comments_flat[] = $_comment;
|
2017-11-30 18:11:00 -05:00
|
|
|
$comment_children = $_comment->get_children(
|
|
|
|
array(
|
|
|
|
'format' => 'flat',
|
|
|
|
'status' => $comment_args['status'],
|
|
|
|
'orderby' => $comment_args['orderby'],
|
|
|
|
)
|
|
|
|
);
|
2016-01-08 17:17:26 -05:00
|
|
|
|
|
|
|
foreach ( $comment_children as $comment_child ) {
|
|
|
|
$comments_flat[] = $comment_child;
|
|
|
|
}
|
2015-12-14 14:37:43 -05:00
|
|
|
}
|
2016-01-08 17:17:26 -05:00
|
|
|
} else {
|
|
|
|
$comments_flat = $_comments;
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
}
|
Use the comment API rather than direct SQL queries in `comments_template()`.
`comments_template()` is used by most themes to display a post's comments. It
shows all comments that have been approved, and also shows all pending comments
by the current visitor (as determined by the comment cookies). However, the
comments API previously had no way of querying for "all comments that are
either approved, or are unapproved but written by foo@example.com". The
workaround was a direct SQL query: uncached, not subject to the same filters as
other comment queries, and just generally icky.
The new `include_unapproved` parameter for `WP_Comment_Query` accepts an array
of user IDs or email addresses. Pending comments associated with users in this
array will be included in query results, regardless of the value of the 'status'
parameter. In `comments_template()`, we leap from direct SQL queries to
`get_comments()` plus `include_unapproved', striving to put right what once
went wrong.
Props boonebgorges, simonwheatley, hardy101, jesin.
Fixes #19623.
Built from https://develop.svn.wordpress.org/trunk@29965
git-svn-id: http://core.svn.wordpress.org/trunk@29712 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2014-10-19 15:39:20 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comments array.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.1.0
|
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @param array $comments Array of comments supplied to the comments template.
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
* @param int $post_id Post ID.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
$wp_query->comments = apply_filters( 'comments_array', $comments_flat, $post->ID );
|
2015-09-29 21:35:26 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$comments = &$wp_query->comments;
|
|
|
|
$wp_query->comment_count = count( $wp_query->comments );
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
$wp_query->max_num_comment_pages = $comment_query->max_num_pages;
|
2006-11-30 22:30:26 -05:00
|
|
|
|
2008-10-06 19:16:26 -04:00
|
|
|
if ( $separate_comments ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$wp_query->comments_by_type = separate_comments( $comments );
|
|
|
|
$comments_by_type = &$wp_query->comments_by_type;
|
2015-09-24 12:31:24 -04:00
|
|
|
} else {
|
|
|
|
$wp_query->comments_by_type = array();
|
2008-10-06 19:16:26 -04:00
|
|
|
}
|
|
|
|
|
2012-01-05 15:50:54 -05:00
|
|
|
$overridden_cpage = false;
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2024-10-06 12:56:19 -04:00
|
|
|
if ( '' === get_query_var( 'cpage' ) && $wp_query->max_num_comment_pages > 1 ) {
|
2020-05-16 14:42:12 -04:00
|
|
|
set_query_var( 'cpage', 'newest' === get_option( 'default_comments_page' ) ? get_comment_pages_count() : 1 );
|
2012-01-05 15:50:54 -05:00
|
|
|
$overridden_cpage = true;
|
2008-10-24 03:27:19 -04:00
|
|
|
}
|
2008-10-23 12:08:47 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! defined( 'COMMENTS_TEMPLATE' ) ) {
|
|
|
|
define( 'COMMENTS_TEMPLATE', true );
|
|
|
|
}
|
2008-08-09 01:36:14 -04:00
|
|
|
|
2024-02-21 14:26:08 -05:00
|
|
|
$theme_template = trailingslashit( $wp_stylesheet_path ) . $file;
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the path to the theme template file used for the comments template.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.1
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @param string $theme_template The path to the theme template file.
|
|
|
|
*/
|
|
|
|
$include = apply_filters( 'comments_template', $theme_template );
|
2020-05-16 14:42:12 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( file_exists( $include ) ) {
|
2020-02-06 01:33:11 -05:00
|
|
|
require $include;
|
2024-02-21 14:26:08 -05:00
|
|
|
} elseif ( file_exists( trailingslashit( $wp_template_path ) . $file ) ) {
|
|
|
|
require trailingslashit( $wp_template_path ) . $file;
|
2020-01-28 19:45:18 -05:00
|
|
|
} else { // Backward compat code will be removed in a future release.
|
2020-02-06 01:33:11 -05:00
|
|
|
require ABSPATH . WPINC . '/theme-compat/comments.php';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2007-12-26 12:18:13 -05:00
|
|
|
/**
|
2015-12-09 22:06:30 -05:00
|
|
|
* Displays the link to the comments for the current post ID.
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2007-12-26 12:18:13 -05:00
|
|
|
* @since 0.71
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2019-01-07 23:50:51 -05:00
|
|
|
* @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.
|
2007-12-26 12:18:13 -05:00
|
|
|
*/
|
2009-04-16 14:51:50 -04:00
|
|
|
function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$post_id = get_the_ID();
|
|
|
|
$post_title = get_the_title();
|
2024-12-08 18:43:21 -05:00
|
|
|
$comments_number = (int) get_comments_number( $post_id );
|
2015-02-09 15:15:27 -05:00
|
|
|
|
|
|
|
if ( false === $zero ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Post title. */
|
2020-07-23 09:11:04 -04:00
|
|
|
$zero = sprintf( __( 'No Comments<span class="screen-reader-text"> on %s</span>' ), $post_title );
|
2015-02-09 15:15:27 -05:00
|
|
|
}
|
2015-03-18 17:52:27 -04:00
|
|
|
|
2015-02-09 15:15:27 -05:00
|
|
|
if ( false === $one ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Post title. */
|
2020-07-23 09:11:04 -04:00
|
|
|
$one = sprintf( __( '1 Comment<span class="screen-reader-text"> on %s</span>' ), $post_title );
|
2015-02-09 15:15:27 -05:00
|
|
|
}
|
2015-03-18 17:52:27 -04:00
|
|
|
|
2015-02-09 15:15:27 -05:00
|
|
|
if ( false === $more ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: 1: Number of comments, 2: Post title. */
|
2023-04-19 10:40:19 -04:00
|
|
|
$more = _n(
|
|
|
|
'%1$s Comment<span class="screen-reader-text"> on %2$s</span>',
|
|
|
|
'%1$s Comments<span class="screen-reader-text"> on %2$s</span>',
|
|
|
|
$comments_number
|
|
|
|
);
|
|
|
|
$more = sprintf( $more, number_format_i18n( $comments_number ), $post_title );
|
2015-02-09 15:15:27 -05:00
|
|
|
}
|
2015-03-18 17:52:27 -04:00
|
|
|
|
2015-02-09 15:15:27 -05:00
|
|
|
if ( false === $none ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Post title. */
|
2020-07-23 09:11:04 -04:00
|
|
|
$none = sprintf( __( 'Comments Off<span class="screen-reader-text"> on %s</span>' ), $post_title );
|
2015-02-09 15:15:27 -05:00
|
|
|
}
|
2006-04-19 06:13:28 -04:00
|
|
|
|
2024-12-08 18:43:21 -05:00
|
|
|
if ( 0 === $comments_number && ! comments_open() && ! pings_open() ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
printf(
|
|
|
|
'<span%1$s>%2$s</span>',
|
|
|
|
! empty( $css_class ) ? ' class="' . esc_attr( $css_class ) . '"' : '',
|
|
|
|
$none
|
|
|
|
);
|
2006-04-19 06:13:28 -04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2008-09-03 15:54:14 -04:00
|
|
|
if ( post_password_required() ) {
|
2015-05-03 12:18:28 -04:00
|
|
|
_e( 'Enter your password to view comments.' );
|
2008-09-03 15:54:14 -04:00
|
|
|
return;
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2024-12-08 18:43:21 -05:00
|
|
|
if ( 0 === $comments_number ) {
|
2015-12-09 22:06:30 -05:00
|
|
|
$respond_link = get_permalink() . '#respond';
|
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the respond link when a post has no comments.
|
2015-12-09 22:06:30 -05:00
|
|
|
*
|
|
|
|
* @since 4.4.0
|
|
|
|
*
|
|
|
|
* @param string $respond_link The default response link.
|
2020-07-23 09:11:04 -04:00
|
|
|
* @param int $post_id The post ID.
|
2015-12-09 22:06:30 -05:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_link = apply_filters( 'respond_link', $respond_link, $post_id );
|
2015-09-15 16:46:35 -04:00
|
|
|
} else {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comments_link = get_comments_link();
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$link_attributes = '';
|
2008-02-05 01:47:27 -05:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comments link attributes for display.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.5.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $link_attributes The comments link attributes. Default empty.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
$link_attributes = apply_filters( 'comments_popup_link_attributes', $link_attributes );
|
|
|
|
|
|
|
|
printf(
|
|
|
|
'<a href="%1$s"%2$s%3$s>%4$s</a>',
|
|
|
|
esc_url( $comments_link ),
|
|
|
|
! empty( $css_class ) ? ' class="' . $css_class . '" ' : '',
|
|
|
|
$link_attributes,
|
|
|
|
get_comments_number_text( $zero, $one, $more )
|
|
|
|
);
|
2006-04-19 06:13:28 -04:00
|
|
|
}
|
|
|
|
|
2008-09-24 16:02:41 -04:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves HTML content for reply to comment link.
|
2008-09-24 16:02:41 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
2015-09-16 09:52:25 -04:00
|
|
|
* @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object.
|
2021-06-07 19:15:58 -04:00
|
|
|
*
|
2020-07-23 17:11:05 -04:00
|
|
|
* @param array $args {
|
2013-09-23 00:16:08 -04:00
|
|
|
* Optional. Override default arguments.
|
|
|
|
*
|
2024-10-05 19:04:11 -04:00
|
|
|
* @type string $add_below The first part of the selector used to identify the comment to respond below.
|
|
|
|
* The resulting value is passed as the first parameter to addComment.moveForm(),
|
|
|
|
* concatenated as $add_below-$comment->comment_ID. Default 'comment'.
|
|
|
|
* @type string $respond_id The selector identifying the responding comment. Passed as the third parameter
|
|
|
|
* to addComment.moveForm(), and appended to the link URL as a hash value.
|
|
|
|
* Default 'respond'.
|
|
|
|
* @type string $reply_text The visible text of the Reply link. Default 'Reply'.
|
|
|
|
* @type string $reply_to_text The accessible name of the Reply link, using `%s` as a placeholder
|
|
|
|
* for the comment author's name. Default 'Reply to %s'.
|
|
|
|
* Should start with the visible `reply_text` value.
|
|
|
|
* @type bool $show_reply_to_text Whether to use `reply_to_text` as visible link text. Default false.
|
|
|
|
* @type string $login_text The text of the link to reply if logged out. Default 'Log in to Reply'.
|
|
|
|
* @type int $max_depth The max depth of the comment tree. Default 0.
|
|
|
|
* @type int $depth The depth of the new comment. Must be greater than 0 and less than the value
|
|
|
|
* of the 'thread_comments_depth' option set in Settings > Discussion. Default 0.
|
|
|
|
* @type string $before The text or HTML to add before the reply link. Default empty.
|
|
|
|
* @type string $after The text or HTML to add after the reply link. Default empty.
|
2013-09-13 15:20:09 -04:00
|
|
|
* }
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Comment $comment Optional. Comment being replied to. Default current comment.
|
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on.
|
2015-09-16 09:52:25 -04:00
|
|
|
* Default current post.
|
2019-08-03 22:20:55 -04:00
|
|
|
* @return string|false|null Link to show comment form, if successful. False, if comments are closed.
|
2008-09-24 16:02:41 -04:00
|
|
|
*/
|
2014-05-15 11:35:15 -04:00
|
|
|
function get_comment_reply_link( $args = array(), $comment = null, $post = null ) {
|
2013-09-13 15:20:09 -04:00
|
|
|
$defaults = array(
|
2024-10-05 19:04:11 -04:00
|
|
|
'add_below' => 'comment',
|
|
|
|
'respond_id' => 'respond',
|
|
|
|
'reply_text' => __( 'Reply' ),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: Comment reply button text. %s: Comment author name. */
|
2024-10-05 19:04:11 -04:00
|
|
|
'reply_to_text' => __( 'Reply to %s' ),
|
|
|
|
'login_text' => __( 'Log in to Reply' ),
|
|
|
|
'max_depth' => 0,
|
|
|
|
'depth' => 0,
|
|
|
|
'before' => '',
|
|
|
|
'after' => '',
|
|
|
|
'show_reply_to_text' => false,
|
2013-09-13 15:20:09 -04:00
|
|
|
);
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
$args = wp_parse_args( $args, $defaults );
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2024-12-08 18:43:21 -05:00
|
|
|
$args['max_depth'] = (int) $args['max_depth'];
|
|
|
|
$args['depth'] = (int) $args['depth'];
|
|
|
|
|
|
|
|
if ( 0 === $args['depth'] || $args['max_depth'] <= $args['depth'] ) {
|
2008-09-15 20:24:43 -04:00
|
|
|
return;
|
2014-05-15 11:35:15 -04:00
|
|
|
}
|
2008-09-12 19:45:15 -04:00
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
$comment = get_comment( $comment );
|
2014-10-02 16:45:16 -04:00
|
|
|
|
2019-09-27 10:46:57 -04:00
|
|
|
if ( empty( $comment ) ) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
if ( empty( $post ) ) {
|
2010-02-25 02:56:25 -05:00
|
|
|
$post = $comment->comment_post_ID;
|
2014-05-15 11:35:15 -04:00
|
|
|
}
|
2014-10-02 16:45:16 -04:00
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
$post = get_post( $post );
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
if ( ! comments_open( $post->ID ) ) {
|
2008-09-11 15:25:50 -04:00
|
|
|
return false;
|
2014-05-15 11:35:15 -04:00
|
|
|
}
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2021-06-07 17:49:59 -04:00
|
|
|
if ( get_option( 'page_comments' ) ) {
|
|
|
|
$permalink = str_replace( '#comment-' . $comment->comment_ID, '', get_comment_link( $comment ) );
|
|
|
|
} else {
|
|
|
|
$permalink = get_permalink( $post->ID );
|
|
|
|
}
|
|
|
|
|
2014-10-27 07:45:18 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment reply link arguments.
|
2014-10-27 07:45:18 -04:00
|
|
|
*
|
|
|
|
* @since 4.1.0
|
|
|
|
*
|
2015-09-16 09:52:25 -04:00
|
|
|
* @param array $args Comment reply link arguments. See get_comment_reply_link()
|
|
|
|
* for more information on accepted arguments.
|
|
|
|
* @param WP_Comment $comment The object of the comment being replied to.
|
|
|
|
* @param WP_Post $post The WP_Post object.
|
2014-10-27 07:45:18 -04:00
|
|
|
*/
|
|
|
|
$args = apply_filters( 'comment_reply_link_args', $args, $comment, $post );
|
|
|
|
|
2014-05-15 11:35:15 -04:00
|
|
|
if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$link = sprintf(
|
|
|
|
'<a rel="nofollow" class="comment-reply-login" href="%s">%s</a>',
|
2014-10-02 16:45:16 -04:00
|
|
|
esc_url( wp_login_url( get_permalink() ) ),
|
|
|
|
$args['login_text']
|
|
|
|
);
|
2014-05-15 11:35:15 -04:00
|
|
|
} else {
|
2017-12-03 17:37:45 -05:00
|
|
|
$data_attributes = array(
|
2018-08-16 21:51:36 -04:00
|
|
|
'commentid' => $comment->comment_ID,
|
|
|
|
'postid' => $post->ID,
|
|
|
|
'belowelement' => $args['add_below'] . '-' . $comment->comment_ID,
|
|
|
|
'respondelement' => $args['respond_id'],
|
2021-11-14 13:01:04 -05:00
|
|
|
'replyto' => sprintf( $args['reply_to_text'], get_comment_author( $comment ) ),
|
2014-10-02 16:45:16 -04:00
|
|
|
);
|
|
|
|
|
2017-12-03 17:37:45 -05:00
|
|
|
$data_attribute_string = '';
|
|
|
|
|
|
|
|
foreach ( $data_attributes as $name => $value ) {
|
2022-09-12 13:52:08 -04:00
|
|
|
$data_attribute_string .= " data-{$name}=\"" . esc_attr( $value ) . '"';
|
2017-12-03 17:37:45 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
$data_attribute_string = trim( $data_attribute_string );
|
|
|
|
|
2024-10-05 19:04:11 -04:00
|
|
|
$reply_text = $args['show_reply_to_text']
|
|
|
|
? sprintf( $args['reply_to_text'], get_comment_author( $comment ) )
|
|
|
|
: $args['reply_text'];
|
|
|
|
|
|
|
|
$aria_label = $args['show_reply_to_text'] ? '' : sprintf( $args['reply_to_text'], get_comment_author( $comment ) );
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$link = sprintf(
|
2024-10-05 19:04:11 -04:00
|
|
|
'<a rel="nofollow" class="comment-reply-link" href="%s" %s%s>%s</a>',
|
2019-01-20 20:34:51 -05:00
|
|
|
esc_url(
|
|
|
|
add_query_arg(
|
|
|
|
array(
|
|
|
|
'replytocom' => $comment->comment_ID,
|
|
|
|
'unapproved' => false,
|
|
|
|
'moderation-hash' => false,
|
2019-08-13 01:09:56 -04:00
|
|
|
),
|
2021-06-07 17:49:59 -04:00
|
|
|
$permalink
|
2019-01-20 20:34:51 -05:00
|
|
|
)
|
|
|
|
) . '#' . $args['respond_id'],
|
2017-12-03 17:37:45 -05:00
|
|
|
$data_attribute_string,
|
2024-10-05 19:04:11 -04:00
|
|
|
$aria_label ? ' aria-label="' . esc_attr( $aria_label ) . '"' : '',
|
|
|
|
$reply_text
|
2014-10-02 16:45:16 -04:00
|
|
|
);
|
2014-05-15 11:35:15 -04:00
|
|
|
}
|
2015-09-16 09:52:25 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_reply_link = $args['before'] . $link . $args['after'];
|
|
|
|
|
2013-09-13 15:20:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment reply link.
|
2013-09-13 15:20:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_reply_link The HTML markup for the comment reply link.
|
|
|
|
* @param array $args An array of arguments overriding the defaults.
|
|
|
|
* @param WP_Comment $comment The object of the comment being replied.
|
|
|
|
* @param WP_Post $post The WP_Post object.
|
2013-09-13 15:20:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'comment_reply_link', $comment_reply_link, $args, $comment, $post );
|
2008-09-11 15:25:50 -04:00
|
|
|
}
|
|
|
|
|
2008-09-24 16:02:41 -04:00
|
|
|
/**
|
2008-10-29 18:56:48 -04:00
|
|
|
* Displays the HTML content for reply to comment link.
|
2008-09-24 16:02:41 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
2008-10-29 18:56:48 -04:00
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see get_comment_reply_link()
|
|
|
|
*
|
2020-01-02 14:22:03 -05:00
|
|
|
* @param array $args Optional. Override default options. Default empty array.
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Comment $comment Optional. Comment being replied to. Default current comment.
|
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on.
|
2019-12-06 17:23:04 -05:00
|
|
|
* Default current post.
|
2008-10-29 18:56:48 -04:00
|
|
|
*/
|
2017-11-30 18:11:00 -05:00
|
|
|
function comment_reply_link( $args = array(), $comment = null, $post = null ) {
|
|
|
|
echo get_comment_reply_link( $args, $comment, $post );
|
2008-10-29 18:56:48 -04:00
|
|
|
}
|
2008-12-10 16:06:13 -05:00
|
|
|
|
2008-12-10 06:49:37 -05:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves HTML content for reply to post link.
|
2008-12-10 06:49:37 -05:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2020-07-23 17:11:05 -04:00
|
|
|
* @param array $args {
|
2013-09-23 00:16:08 -04:00
|
|
|
* Optional. Override default arguments.
|
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $add_below The first part of the selector used to identify the comment to respond below.
|
|
|
|
* The resulting value is passed as the first parameter to addComment.moveForm(),
|
|
|
|
* concatenated as $add_below-$comment->comment_ID. Default is 'post'.
|
|
|
|
* @type string $respond_id The selector identifying the responding comment. Passed as the third parameter
|
|
|
|
* to addComment.moveForm(), and appended to the link URL as a hash value.
|
|
|
|
* Default 'respond'.
|
|
|
|
* @type string $reply_text Text of the Reply link. Default is 'Leave a Comment'.
|
|
|
|
* @type string $login_text Text of the link to reply if logged out. Default is 'Log in to leave a Comment'.
|
|
|
|
* @type string $before Text or HTML to add before the reply link. Default empty.
|
|
|
|
* @type string $after Text or HTML to add after the reply link. Default empty.
|
2013-09-23 00:16:08 -04:00
|
|
|
* }
|
2014-02-09 22:20:12 -05:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on.
|
|
|
|
* Default current post.
|
2019-08-03 22:20:55 -04:00
|
|
|
* @return string|false|null Link to show comment form, if successful. False, if comments are closed.
|
2008-12-10 06:49:37 -05:00
|
|
|
*/
|
2017-11-30 18:11:00 -05:00
|
|
|
function get_post_reply_link( $args = array(), $post = null ) {
|
2013-09-22 06:16:09 -04:00
|
|
|
$defaults = array(
|
|
|
|
'add_below' => 'post',
|
|
|
|
'respond_id' => 'respond',
|
2017-11-30 18:11:00 -05:00
|
|
|
'reply_text' => __( 'Leave a Comment' ),
|
|
|
|
'login_text' => __( 'Log in to leave a Comment' ),
|
2013-09-22 06:16:09 -04:00
|
|
|
'before' => '',
|
|
|
|
'after' => '',
|
|
|
|
);
|
2008-12-10 06:49:37 -05:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$args = wp_parse_args( $args, $defaults );
|
2014-10-02 16:45:16 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$post = get_post( $post );
|
2009-03-17 22:43:45 -04:00
|
|
|
|
2014-05-15 02:49:14 -04:00
|
|
|
if ( ! comments_open( $post->ID ) ) {
|
2008-12-10 06:49:37 -05:00
|
|
|
return false;
|
2014-05-15 02:49:14 -04:00
|
|
|
}
|
2008-12-10 06:49:37 -05:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) {
|
|
|
|
$link = sprintf(
|
|
|
|
'<a rel="nofollow" class="comment-reply-login" href="%s">%s</a>',
|
2014-10-02 16:45:16 -04:00
|
|
|
wp_login_url( get_permalink() ),
|
|
|
|
$args['login_text']
|
|
|
|
);
|
2014-05-15 02:49:14 -04:00
|
|
|
} else {
|
2017-11-30 18:11:00 -05:00
|
|
|
$onclick = sprintf(
|
|
|
|
'return addComment.moveForm( "%1$s-%2$s", "0", "%3$s", "%2$s" )',
|
2018-08-16 21:51:36 -04:00
|
|
|
$args['add_below'],
|
|
|
|
$post->ID,
|
|
|
|
$args['respond_id']
|
2014-10-02 16:45:16 -04:00
|
|
|
);
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$link = sprintf(
|
|
|
|
"<a rel='nofollow' class='comment-reply-link' href='%s' onclick='%s'>%s</a>",
|
2014-10-02 16:45:16 -04:00
|
|
|
get_permalink( $post->ID ) . '#' . $args['respond_id'],
|
|
|
|
$onclick,
|
|
|
|
$args['reply_text']
|
|
|
|
);
|
2014-05-15 02:49:14 -04:00
|
|
|
}
|
2023-04-19 10:40:19 -04:00
|
|
|
|
|
|
|
$post_reply_link = $args['before'] . $link . $args['after'];
|
2015-09-16 09:52:25 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the formatted post comments link HTML.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $post_reply_link The HTML-formatted post comments link.
|
|
|
|
* @param int|WP_Post $post The post ID or WP_Post object.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'post_comments_link', $post_reply_link, $post );
|
2008-12-10 06:49:37 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Displays the HTML content for reply to post link.
|
2013-09-22 06:16:09 -04:00
|
|
|
*
|
2008-12-10 06:49:37 -05:00
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @see get_post_reply_link()
|
|
|
|
*
|
2020-01-02 14:22:03 -05:00
|
|
|
* @param array $args Optional. Override default options. Default empty array.
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object the comment is going to be displayed on.
|
2014-02-09 22:20:12 -05:00
|
|
|
* Default current post.
|
2008-12-10 06:49:37 -05:00
|
|
|
*/
|
2017-11-30 18:11:00 -05:00
|
|
|
function post_reply_link( $args = array(), $post = null ) {
|
|
|
|
echo get_post_reply_link( $args, $post );
|
2008-12-10 06:49:37 -05:00
|
|
|
}
|
2008-10-29 18:56:48 -04:00
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves HTML content for cancel comment reply link.
|
2008-09-24 16:02:41 -04:00
|
|
|
*
|
2008-10-29 18:56:48 -04:00
|
|
|
* @since 2.7.0
|
2023-02-20 20:45:24 -05:00
|
|
|
* @since 6.2.0 Added the `$post` parameter.
|
2008-12-09 13:03:31 -05:00
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $link_text Optional. Text to display for cancel reply link. If empty,
|
|
|
|
* defaults to 'Click here to cancel reply'. Default empty.
|
|
|
|
* @param int|WP_Post|null $post Optional. The post the comment thread is being
|
|
|
|
* displayed for. Defaults to the current global post.
|
2015-05-24 01:19:24 -04:00
|
|
|
* @return string
|
2008-09-24 16:02:41 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
function get_cancel_comment_reply_link( $link_text = '', $post = null ) {
|
|
|
|
if ( empty( $link_text ) ) {
|
|
|
|
$link_text = __( 'Click here to cancel reply.' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-12-09 13:03:31 -05:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
$post = get_post( $post );
|
|
|
|
$reply_to_id = $post ? _get_comment_reply_id( $post->ID ) : 0;
|
2023-04-19 10:40:19 -04:00
|
|
|
$link_style = 0 !== $reply_to_id ? '' : ' style="display:none;"';
|
|
|
|
$link_url = esc_url( remove_query_arg( array( 'replytocom', 'unapproved', 'moderation-hash' ) ) ) . '#respond';
|
|
|
|
|
|
|
|
$cancel_comment_reply_link = sprintf(
|
|
|
|
'<a rel="nofollow" id="cancel-comment-reply-link" href="%1$s"%2$s>%3$s</a>',
|
|
|
|
$link_url,
|
|
|
|
$link_style,
|
|
|
|
$link_text
|
|
|
|
);
|
2015-09-16 09:52:25 -04:00
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the cancel comment reply link HTML.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $cancel_comment_reply_link The HTML-formatted cancel comment reply link.
|
|
|
|
* @param string $link_url Cancel comment reply link URL.
|
|
|
|
* @param string $link_text Cancel comment reply link text.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'cancel_comment_reply_link', $cancel_comment_reply_link, $link_url, $link_text );
|
2008-10-29 18:56:48 -04:00
|
|
|
}
|
2008-10-09 03:37:05 -04:00
|
|
|
|
2008-10-29 18:56:48 -04:00
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays HTML content for cancel comment reply link.
|
2008-10-29 18:56:48 -04:00
|
|
|
*
|
|
|
|
* @since 2.7.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $link_text Optional. Text to display for cancel reply link. If empty,
|
2020-07-13 10:42:03 -04:00
|
|
|
* defaults to 'Click here to cancel reply'. Default empty.
|
2008-10-29 18:56:48 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
function cancel_comment_reply_link( $link_text = '' ) {
|
|
|
|
echo get_cancel_comment_reply_link( $link_text );
|
2008-10-09 03:37:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Retrieves hidden input HTML for replying to comments.
|
2008-10-09 03:37:05 -04:00
|
|
|
*
|
2010-04-11 11:23:20 -04:00
|
|
|
* @since 3.0.0
|
2023-02-20 20:45:24 -05:00
|
|
|
* @since 6.2.0 Renamed `$post_id` to `$post` and added WP_Post support.
|
2010-04-11 11:23:20 -04:00
|
|
|
*
|
2023-02-20 20:45:24 -05:00
|
|
|
* @param int|WP_Post|null $post Optional. The post the comment is being displayed for.
|
|
|
|
* Defaults to the current global post.
|
2020-07-23 09:11:04 -04:00
|
|
|
* @return string Hidden input HTML for replying to comments.
|
2008-10-09 03:37:05 -04:00
|
|
|
*/
|
2023-02-20 20:45:24 -05:00
|
|
|
function get_comment_id_fields( $post = null ) {
|
|
|
|
$post = get_post( $post );
|
|
|
|
if ( ! $post ) {
|
|
|
|
return '';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-10-14 15:06:18 -04:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
$post_id = $post->ID;
|
|
|
|
$reply_to_id = _get_comment_reply_id( $post_id );
|
2023-04-19 10:40:19 -04:00
|
|
|
|
|
|
|
$comment_id_fields = "<input type='hidden' name='comment_post_ID' value='$post_id' id='comment_post_ID' />\n";
|
|
|
|
$comment_id_fields .= "<input type='hidden' name='comment_parent' id='comment_parent' value='$reply_to_id' />\n";
|
2013-09-23 17:21:09 -04:00
|
|
|
|
|
|
|
/**
|
2020-06-20 08:02:12 -04:00
|
|
|
* Filters the returned comment ID fields.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
2023-04-19 10:40:19 -04:00
|
|
|
* @param string $comment_id_fields The HTML-formatted hidden ID field comment elements.
|
|
|
|
* @param int $post_id The post ID.
|
|
|
|
* @param int $reply_to_id The ID of the comment being replied to.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2023-04-19 10:40:19 -04:00
|
|
|
return apply_filters( 'comment_id_fields', $comment_id_fields, $post_id, $reply_to_id );
|
2010-04-11 04:56:18 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Outputs hidden input HTML for replying to comments.
|
2010-04-11 04:56:18 -04:00
|
|
|
*
|
2020-07-23 09:11:04 -04:00
|
|
|
* Adds two hidden inputs to the comment form to identify the `comment_post_ID`
|
|
|
|
* and `comment_parent` values for threaded comments.
|
|
|
|
*
|
|
|
|
* This tag must be within the `<form>` section of the `comments.php` template.
|
|
|
|
*
|
2010-04-11 04:56:18 -04:00
|
|
|
* @since 2.7.0
|
2023-02-20 20:45:24 -05:00
|
|
|
* @since 6.2.0 Renamed `$post_id` to `$post` and added WP_Post support.
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2020-07-23 09:11:04 -04:00
|
|
|
* @see get_comment_id_fields()
|
|
|
|
*
|
2023-02-20 20:45:24 -05:00
|
|
|
* @param int|WP_Post|null $post Optional. The post the comment is being displayed for.
|
|
|
|
* Defaults to the current global post.
|
2010-04-11 04:56:18 -04:00
|
|
|
*/
|
2023-02-20 20:45:24 -05:00
|
|
|
function comment_id_fields( $post = null ) {
|
|
|
|
echo get_comment_id_fields( $post );
|
2008-10-09 03:37:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays text based on comment reply status.
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2014-12-01 19:31:22 -05:00
|
|
|
* Only affects users with JavaScript disabled.
|
2008-10-09 03:37:05 -04:00
|
|
|
*
|
2016-02-13 14:15:28 -05:00
|
|
|
* @internal The $comment global must be present to allow template tags access to the current
|
|
|
|
* comment. See https://core.trac.wordpress.org/changeset/36512.
|
|
|
|
*
|
2008-10-09 03:37:05 -04:00
|
|
|
* @since 2.7.0
|
2023-02-20 20:45:24 -05:00
|
|
|
* @since 6.2.0 Added the `$post` parameter.
|
|
|
|
*
|
2023-02-21 10:28:17 -05:00
|
|
|
* @global WP_Comment $comment Global comment object.
|
|
|
|
*
|
2024-10-05 19:04:11 -04:00
|
|
|
* @param string|false $no_reply_text Optional. Text to display when not replying to a comment.
|
|
|
|
* Default false.
|
|
|
|
* @param string|false $reply_text Optional. Text to display when replying to a comment.
|
|
|
|
* Default false. Accepts "%s" for the author of the comment
|
|
|
|
* being replied to.
|
|
|
|
* @param bool $link_to_parent Optional. Boolean to control making the author's name a link
|
|
|
|
* to their comment. Default true.
|
|
|
|
* @param int|WP_Post|null $post Optional. The post that the comment form is being displayed for.
|
|
|
|
* Defaults to the current global post.
|
2008-10-09 03:37:05 -04:00
|
|
|
*/
|
2023-02-20 20:45:24 -05:00
|
|
|
function comment_form_title( $no_reply_text = false, $reply_text = false, $link_to_parent = true, $post = null ) {
|
2023-02-21 10:28:17 -05:00
|
|
|
global $comment;
|
|
|
|
|
2020-07-23 09:34:07 -04:00
|
|
|
if ( false === $no_reply_text ) {
|
|
|
|
$no_reply_text = __( 'Leave a Reply' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2020-07-23 09:34:07 -04:00
|
|
|
|
|
|
|
if ( false === $reply_text ) {
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Author of the comment being replied to. */
|
2020-07-23 09:34:07 -04:00
|
|
|
$reply_text = __( 'Leave a Reply to %s' );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2015-07-01 20:47:24 -04:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
$post = get_post( $post );
|
|
|
|
if ( ! $post ) {
|
|
|
|
echo $no_reply_text;
|
|
|
|
return;
|
|
|
|
}
|
2008-10-09 03:37:05 -04:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
$reply_to_id = _get_comment_reply_id( $post->ID );
|
|
|
|
|
|
|
|
if ( 0 === $reply_to_id ) {
|
2020-07-23 09:34:07 -04:00
|
|
|
echo $no_reply_text;
|
2023-02-20 20:45:24 -05:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2023-02-21 10:28:17 -05:00
|
|
|
// Sets the global so that template tags can be used in the comment form.
|
|
|
|
$comment = get_comment( $reply_to_id );
|
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
if ( $link_to_parent ) {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author = sprintf(
|
|
|
|
'<a href="#comment-%1$s">%2$s</a>',
|
|
|
|
get_comment_ID(),
|
|
|
|
get_comment_author( $reply_to_id )
|
|
|
|
);
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
2023-04-19 10:40:19 -04:00
|
|
|
$comment_author = get_comment_author( $reply_to_id );
|
2023-02-20 20:45:24 -05:00
|
|
|
}
|
2020-07-23 09:34:07 -04:00
|
|
|
|
2023-04-19 10:40:19 -04:00
|
|
|
printf( $reply_text, $comment_author );
|
2023-02-20 20:45:24 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets the comment's reply to ID from the $_GET['replytocom'].
|
|
|
|
*
|
|
|
|
* @since 6.2.0
|
|
|
|
*
|
|
|
|
* @access private
|
|
|
|
*
|
|
|
|
* @param int|WP_Post $post The post the comment is being displayed for.
|
|
|
|
* Defaults to the current global post.
|
|
|
|
* @return int Comment's reply to ID.
|
|
|
|
*/
|
|
|
|
function _get_comment_reply_id( $post = null ) {
|
|
|
|
$post = get_post( $post );
|
|
|
|
|
|
|
|
if ( ! $post || ! isset( $_GET['replytocom'] ) || ! is_numeric( $_GET['replytocom'] ) ) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
$reply_to_id = (int) $_GET['replytocom'];
|
2020-07-23 09:34:07 -04:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
/*
|
|
|
|
* Validate the comment.
|
|
|
|
* Bail out if it does not exist, is not approved, or its
|
|
|
|
* `comment_post_ID` does not match the given post ID.
|
|
|
|
*/
|
|
|
|
$comment = get_comment( $reply_to_id );
|
|
|
|
|
|
|
|
if (
|
|
|
|
! $comment instanceof WP_Comment ||
|
|
|
|
0 === (int) $comment->comment_approved ||
|
|
|
|
$post->ID !== (int) $comment->comment_post_ID
|
|
|
|
) {
|
|
|
|
return 0;
|
2015-07-01 20:47:24 -04:00
|
|
|
}
|
2023-02-20 20:45:24 -05:00
|
|
|
|
|
|
|
return $reply_to_id;
|
2008-09-11 15:25:50 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2019-12-24 11:19:01 -05:00
|
|
|
* Displays a list of comments.
|
2008-09-11 15:25:50 -04:00
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* Used in the comments.php template to list comments for a particular post.
|
2008-09-11 15:25:50 -04:00
|
|
|
*
|
2008-09-24 16:02:41 -04:00
|
|
|
* @since 2.7.0
|
2008-09-11 15:25:50 -04:00
|
|
|
*
|
2022-06-06 06:51:12 -04:00
|
|
|
* @see WP_Query::$comments
|
2014-02-09 22:20:12 -05:00
|
|
|
*
|
2019-08-03 21:59:56 -04:00
|
|
|
* @global WP_Query $wp_query WordPress Query object.
|
2015-05-24 01:19:24 -04:00
|
|
|
* @global int $comment_alt
|
|
|
|
* @global int $comment_depth
|
|
|
|
* @global int $comment_thread_alt
|
|
|
|
* @global bool $overridden_cpage
|
|
|
|
* @global bool $in_comment_loop
|
|
|
|
*
|
2013-09-23 00:16:08 -04:00
|
|
|
* @param string|array $args {
|
|
|
|
* Optional. Formatting options.
|
|
|
|
*
|
2020-07-14 07:56:04 -04:00
|
|
|
* @type object $walker Instance of a Walker class to list comments. Default null.
|
|
|
|
* @type int $max_depth The maximum comments depth. Default empty.
|
2020-07-23 21:11:02 -04:00
|
|
|
* @type string $style The style of list ordering. Accepts 'ul', 'ol', or 'div'.
|
|
|
|
* 'div' will result in no additional list markup. Default 'ul'.
|
2020-07-14 07:56:04 -04:00
|
|
|
* @type callable $callback Callback function to use. Default null.
|
|
|
|
* @type callable $end-callback Callback function to use at the end. Default null.
|
2020-07-23 21:11:02 -04:00
|
|
|
* @type string $type Type of comments to list. Accepts 'all', 'comment',
|
|
|
|
* 'pingback', 'trackback', 'pings'. Default 'all'.
|
2020-07-14 07:56:04 -04:00
|
|
|
* @type int $page Page ID to list comments for. Default empty.
|
|
|
|
* @type int $per_page Number of comments to list per page. Default empty.
|
|
|
|
* @type int $avatar_size Height and width dimensions of the avatar size. Default 32.
|
2020-07-23 21:11:02 -04:00
|
|
|
* @type bool $reverse_top_level Ordering of the listed comments. If true, will display
|
|
|
|
* newest comments first. Default null.
|
2020-07-14 07:56:04 -04:00
|
|
|
* @type bool $reverse_children Whether to reverse child comments in the list. Default null.
|
2020-07-23 21:11:02 -04:00
|
|
|
* @type string $format How to format the comments list. Accepts 'html5', 'xhtml'.
|
|
|
|
* Default 'html5' if the theme supports it.
|
2020-07-14 07:56:04 -04:00
|
|
|
* @type bool $short_ping Whether to output short pings. Default false.
|
|
|
|
* @type bool $echo Whether to echo the output or return it. Default true.
|
2013-09-23 00:16:08 -04:00
|
|
|
* }
|
2023-02-21 11:39:19 -05:00
|
|
|
* @param WP_Comment[] $comments Optional. Array of WP_Comment objects. Default null.
|
2020-01-11 13:32:05 -05:00
|
|
|
* @return void|string Void if 'echo' argument is true, or no comments to list.
|
|
|
|
* Otherwise, HTML list of comments.
|
2008-09-11 15:25:50 -04:00
|
|
|
*/
|
2013-09-23 00:16:08 -04:00
|
|
|
function wp_list_comments( $args = array(), $comments = null ) {
|
2008-11-20 01:41:55 -05:00
|
|
|
global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;
|
|
|
|
|
|
|
|
$in_comment_loop = true;
|
2008-09-24 00:45:50 -04:00
|
|
|
|
2019-07-02 19:42:58 -04:00
|
|
|
$comment_alt = 0;
|
|
|
|
$comment_thread_alt = 0;
|
|
|
|
$comment_depth = 1;
|
2008-09-15 20:23:38 -04:00
|
|
|
|
2013-03-14 00:26:04 -04:00
|
|
|
$defaults = array(
|
|
|
|
'walker' => null,
|
|
|
|
'max_depth' => '',
|
|
|
|
'style' => 'ul',
|
|
|
|
'callback' => null,
|
|
|
|
'end-callback' => null,
|
|
|
|
'type' => 'all',
|
|
|
|
'page' => '',
|
|
|
|
'per_page' => '',
|
|
|
|
'avatar_size' => 32,
|
|
|
|
'reverse_top_level' => null,
|
|
|
|
'reverse_children' => '',
|
2013-06-06 11:31:34 -04:00
|
|
|
'format' => current_theme_supports( 'html5', 'comment-list' ) ? 'html5' : 'xhtml',
|
2013-03-14 00:26:04 -04:00
|
|
|
'short_ping' => false,
|
2013-11-24 09:59:10 -05:00
|
|
|
'echo' => true,
|
2013-03-14 00:26:04 -04:00
|
|
|
);
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args = wp_parse_args( $args, $defaults );
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2014-05-06 07:58:14 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the arguments used in retrieving the comment list.
|
2014-05-06 07:58:14 -04:00
|
|
|
*
|
|
|
|
* @since 4.0.0
|
|
|
|
*
|
2014-07-13 21:02:15 -04:00
|
|
|
* @see wp_list_comments()
|
|
|
|
*
|
2019-07-24 20:48:58 -04:00
|
|
|
* @param array $parsed_args An array of arguments for displaying comments.
|
2014-05-06 07:58:14 -04:00
|
|
|
*/
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args = apply_filters( 'wp_list_comments_args', $parsed_args );
|
2014-05-06 07:58:14 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Figure out what comments we'll be looping through ($_comments).
|
2008-11-13 15:36:36 -05:00
|
|
|
if ( null !== $comments ) {
|
|
|
|
$comments = (array) $comments;
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $comments ) ) {
|
2008-11-13 15:36:36 -05:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2020-05-16 14:42:12 -04:00
|
|
|
if ( 'all' !== $parsed_args['type'] ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
$comments_by_type = separate_comments( $comments );
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( empty( $comments_by_type[ $parsed_args['type'] ] ) ) {
|
2008-11-13 15:36:36 -05:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2019-07-24 20:48:58 -04:00
|
|
|
$_comments = $comments_by_type[ $parsed_args['type'] ];
|
2008-11-13 15:36:36 -05:00
|
|
|
} else {
|
|
|
|
$_comments = $comments;
|
|
|
|
}
|
|
|
|
} else {
|
2016-01-12 22:27:27 -05:00
|
|
|
/*
|
|
|
|
* If 'page' or 'per_page' has been passed, and does not match what's in $wp_query,
|
|
|
|
* perform a separate comment query and allow Walker_Comment to paginate.
|
|
|
|
*/
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( $parsed_args['page'] || $parsed_args['per_page'] ) {
|
2024-10-06 12:56:19 -04:00
|
|
|
$current_cpage = (int) get_query_var( 'cpage' );
|
2016-01-12 22:27:27 -05:00
|
|
|
if ( ! $current_cpage ) {
|
|
|
|
$current_cpage = 'newest' === get_option( 'default_comments_page' ) ? 1 : $wp_query->max_num_comment_pages;
|
|
|
|
}
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
|
2024-10-06 12:56:19 -04:00
|
|
|
$current_per_page = (int) get_query_var( 'comments_per_page' );
|
|
|
|
if ( (int) $parsed_args['page'] !== $current_cpage || (int) $parsed_args['per_page'] !== $current_per_page ) {
|
2016-06-08 00:01:27 -04:00
|
|
|
$comment_args = array(
|
2016-01-15 14:48:25 -05:00
|
|
|
'post_id' => get_the_ID(),
|
2016-01-12 22:27:27 -05:00
|
|
|
'orderby' => 'comment_date_gmt',
|
2017-11-30 18:11:00 -05:00
|
|
|
'order' => 'ASC',
|
|
|
|
'status' => 'approve',
|
2016-06-08 00:01:27 -04:00
|
|
|
);
|
|
|
|
|
|
|
|
if ( is_user_logged_in() ) {
|
2020-06-23 09:53:08 -04:00
|
|
|
$comment_args['include_unapproved'] = array( get_current_user_id() );
|
2016-06-08 00:01:27 -04:00
|
|
|
} else {
|
2019-01-20 20:34:51 -05:00
|
|
|
$unapproved_email = wp_get_unapproved_comment_author_email();
|
|
|
|
|
|
|
|
if ( $unapproved_email ) {
|
|
|
|
$comment_args['include_unapproved'] = array( $unapproved_email );
|
2016-06-08 00:01:27 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$comments = get_comments( $comment_args );
|
2016-01-12 22:27:27 -05:00
|
|
|
|
2020-05-16 14:42:12 -04:00
|
|
|
if ( 'all' !== $parsed_args['type'] ) {
|
2016-01-12 22:27:27 -05:00
|
|
|
$comments_by_type = separate_comments( $comments );
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( empty( $comments_by_type[ $parsed_args['type'] ] ) ) {
|
2016-01-12 22:27:27 -05:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
$_comments = $comments_by_type[ $parsed_args['type'] ];
|
2016-01-12 22:27:27 -05:00
|
|
|
} else {
|
|
|
|
$_comments = $comments;
|
|
|
|
}
|
|
|
|
}
|
2015-10-01 01:13:25 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
// Otherwise, fall back on the comments from `$wp_query->comments`.
|
2016-01-12 22:27:27 -05:00
|
|
|
} else {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $wp_query->comments ) ) {
|
2016-01-12 22:27:27 -05:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2020-05-16 14:42:12 -04:00
|
|
|
if ( 'all' !== $parsed_args['type'] ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $wp_query->comments_by_type ) ) {
|
|
|
|
$wp_query->comments_by_type = separate_comments( $wp_query->comments );
|
|
|
|
}
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( empty( $wp_query->comments_by_type[ $parsed_args['type'] ] ) ) {
|
2016-01-12 22:27:27 -05:00
|
|
|
return;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2019-07-24 20:48:58 -04:00
|
|
|
$_comments = $wp_query->comments_by_type[ $parsed_args['type'] ];
|
2015-10-01 01:13:25 -04:00
|
|
|
} else {
|
2016-01-12 22:27:27 -05:00
|
|
|
$_comments = $wp_query->comments;
|
2015-10-01 01:13:25 -04:00
|
|
|
}
|
|
|
|
|
2016-01-12 22:27:27 -05:00
|
|
|
if ( $wp_query->max_num_comment_pages ) {
|
|
|
|
$default_comments_page = get_option( 'default_comments_page' );
|
2024-10-06 12:56:19 -04:00
|
|
|
$cpage = (int) get_query_var( 'cpage' );
|
|
|
|
|
2016-01-12 22:27:27 -05:00
|
|
|
if ( 'newest' === $default_comments_page ) {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['cpage'] = $cpage;
|
2024-10-06 12:56:19 -04:00
|
|
|
} elseif ( 1 === $cpage ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
/*
|
2024-10-06 12:56:19 -04:00
|
|
|
* When the first page shows the oldest comments,
|
|
|
|
* post permalink is the same as the comment permalink.
|
|
|
|
*/
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['cpage'] = '';
|
2016-01-12 22:27:27 -05:00
|
|
|
} else {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['cpage'] = $cpage;
|
2016-01-12 22:27:27 -05:00
|
|
|
}
|
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['page'] = 0;
|
|
|
|
$parsed_args['per_page'] = 0;
|
2016-01-12 22:27:27 -05:00
|
|
|
}
|
Force comment pagination on single posts.
Previously, the 'page_comments' toggle allowed users to disable comment
pagination. This toggle was only superficial, however. Even with
'page_comments' turned on, `comments_template()` loaded all of a post's
comments into memory, and passed them to `wp_list_comments()` and
`Walker_Comment`, the latter of which produced markup for only the
current page of comments. In other words, it was possible to enable
'page_comments', thereby showing only a subset of a post's comments on a given
page, but all comments continued to be loaded in the background. This technique
scaled poorly. Posts with hundreds or thousands of comments would load slowly,
or not at all, even when the 'comments_per_page' setting was set to a
reasonable number.
Recent changesets have addressed this problem through more efficient tree-
walking, better descendant caching, and more selective queries for top-level
post comments. The current changeset completes the project by addressing the
root issue: that loading a post causes all of its comments to be loaded too.
Here's the breakdown:
* Comment pagination is now forced. Setting 'page_comments' to false leads to evil things when you have many comments. If you want to avoid pagination, set 'comments_per_page' to something high.
* The 'page_comments' setting has been expunged from options-discussion.php, and from places in the codebase where it was referenced. For plugins relying on 'page_comments', we now force the value to `true` with a `pre_option` filter.
* `comments_template()` now queries for an appropriately small number of comments. Usually, this means the `comments_per_page` value.
* To preserve the current (odd) behavior for comment pagination links, some unholy hacks have been inserted into `comments_template()`. The ugliness is insulated in this function for backward compatibility and to minimize collateral damage. A side-effect is that, for certain settings of 'default_comments_page', up to 2x the value of `comments_per_page` might be fetched at a time.
* In support of these changes, a `$format` parameter has been added to `WP_Comment::get_children()`. This param allows you to request a flattened array of comment children, suitable for feeding into `Walker_Comment`.
* `WP_Query` loops are now informed about total available comment counts and comment pages by the `WP_Comment_Query` (`found_comments`, `max_num_pages`), instead of by `Walker_Comment`.
Aside from radical performance improvements in the case of a post with many
comments, this changeset fixes a bug that caused the first page of comments to
be partial (`found_comments` % `comments_per_page`), rather than the last, as
you'd expect.
Props boonebgorges, wonderboymusic.
Fixes #8071.
Built from https://develop.svn.wordpress.org/trunk@34561
git-svn-id: http://core.svn.wordpress.org/trunk@34525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-09-25 16:40:25 -04:00
|
|
|
}
|
2008-11-13 15:36:36 -05:00
|
|
|
}
|
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( '' === $parsed_args['per_page'] && get_option( 'page_comments' ) ) {
|
|
|
|
$parsed_args['per_page'] = get_query_var( 'comments_per_page' );
|
2015-10-21 12:26:42 -04:00
|
|
|
}
|
2008-09-23 17:11:27 -04:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( empty( $parsed_args['per_page'] ) ) {
|
|
|
|
$parsed_args['per_page'] = 0;
|
|
|
|
$parsed_args['page'] = 0;
|
2008-09-23 17:11:27 -04:00
|
|
|
}
|
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( '' === $parsed_args['max_depth'] ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( get_option( 'thread_comments' ) ) {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['max_depth'] = get_option( 'thread_comments_depth' );
|
2017-11-30 18:11:00 -05:00
|
|
|
} else {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['max_depth'] = -1;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-09-23 17:11:27 -04:00
|
|
|
}
|
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( '' === $parsed_args['page'] ) {
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( empty( $overridden_cpage ) ) {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['page'] = get_query_var( 'cpage' );
|
2008-10-23 12:08:47 -04:00
|
|
|
} else {
|
2024-10-06 12:56:19 -04:00
|
|
|
$threaded = ( -1 !== (int) $parsed_args['max_depth'] );
|
2020-05-16 14:42:12 -04:00
|
|
|
$parsed_args['page'] = ( 'newest' === get_option( 'default_comments_page' ) ) ? get_comment_pages_count( $_comments, $parsed_args['per_page'], $threaded ) : 1;
|
2019-07-24 20:48:58 -04:00
|
|
|
set_query_var( 'cpage', $parsed_args['page'] );
|
2008-10-23 12:08:47 -04:00
|
|
|
}
|
|
|
|
}
|
2024-10-06 12:56:19 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Validation check.
|
2024-10-06 12:56:19 -04:00
|
|
|
$parsed_args['page'] = (int) $parsed_args['page'];
|
|
|
|
$parsed_args['per_page'] = (int) $parsed_args['per_page'];
|
|
|
|
if ( 0 === $parsed_args['page'] && 0 !== $parsed_args['per_page'] ) {
|
2019-07-24 20:48:58 -04:00
|
|
|
$parsed_args['page'] = 1;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-10-23 12:08:47 -04:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( null === $parsed_args['reverse_top_level'] ) {
|
2020-05-16 14:42:12 -04:00
|
|
|
$parsed_args['reverse_top_level'] = ( 'desc' === get_option( 'comment_order' ) );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2008-10-23 12:08:47 -04:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( empty( $parsed_args['walker'] ) ) {
|
2022-11-29 10:51:14 -05:00
|
|
|
$walker = new Walker_Comment();
|
2014-05-15 02:43:15 -04:00
|
|
|
} else {
|
2019-07-24 20:48:58 -04:00
|
|
|
$walker = $parsed_args['walker'];
|
2014-05-15 02:43:15 -04:00
|
|
|
}
|
2008-09-11 15:25:50 -04:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
$output = $walker->paged_walk( $_comments, $parsed_args['max_depth'], $parsed_args['page'], $parsed_args['per_page'], $parsed_args );
|
2008-11-20 01:41:55 -05:00
|
|
|
|
|
|
|
$in_comment_loop = false;
|
2013-11-24 09:59:10 -05:00
|
|
|
|
2019-07-24 20:48:58 -04:00
|
|
|
if ( $parsed_args['echo'] ) {
|
2013-11-24 09:59:10 -05:00
|
|
|
echo $output;
|
2014-05-15 02:43:15 -04:00
|
|
|
} else {
|
2013-11-24 09:59:10 -05:00
|
|
|
return $output;
|
2014-05-15 02:43:15 -04:00
|
|
|
}
|
2008-09-11 15:25:50 -04:00
|
|
|
}
|
|
|
|
|
2010-01-23 13:06:37 -05:00
|
|
|
/**
|
2016-05-23 14:59:27 -04:00
|
|
|
* Outputs a complete commenting form for use within a template.
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2020-07-30 15:14:03 -04:00
|
|
|
* Most strings and form fields may be controlled through the `$args` array passed
|
2016-05-23 14:59:27 -04:00
|
|
|
* into the function, while you may also choose to use the {@see 'comment_form_default_fields'}
|
2010-01-23 13:06:37 -05:00
|
|
|
* filter to modify the array of default fields if you'd just like to add a new
|
|
|
|
* one or remove a single field. All fields are also individually passed through
|
2020-07-30 15:14:03 -04:00
|
|
|
* a filter of the {@see 'comment_form_field_$name'} where `$name` is the key used
|
2010-01-23 13:06:37 -05:00
|
|
|
* in the array of fields.
|
|
|
|
*
|
2010-03-26 15:13:36 -04:00
|
|
|
* @since 3.0.0
|
2015-03-17 14:38:29 -04:00
|
|
|
* @since 4.1.0 Introduced the 'class_submit' argument.
|
2015-10-06 13:17:24 -04:00
|
|
|
* @since 4.2.0 Introduced the 'submit_button' and 'submit_fields' arguments.
|
|
|
|
* @since 4.4.0 Introduced the 'class_form', 'title_reply_before', 'title_reply_after',
|
2015-09-24 17:33:26 -04:00
|
|
|
* 'cancel_reply_before', and 'cancel_reply_after' arguments.
|
2016-02-07 03:05:27 -05:00
|
|
|
* @since 4.5.0 The 'author', 'email', and 'url' form fields are limited to 245, 100,
|
|
|
|
* and 200 characters, respectively.
|
2016-04-14 14:18:29 -04:00
|
|
|
* @since 4.6.0 Introduced the 'action' argument.
|
2018-05-21 09:13:21 -04:00
|
|
|
* @since 4.9.6 Introduced the 'cookies' default comment field.
|
2020-07-07 14:29:04 -04:00
|
|
|
* @since 5.5.0 Introduced the 'class_container' argument.
|
2013-09-23 00:16:08 -04:00
|
|
|
*
|
2013-09-23 13:16:08 -04:00
|
|
|
* @param array $args {
|
|
|
|
* Optional. Default arguments and form fields to override.
|
|
|
|
*
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type array $fields {
|
2016-05-23 14:59:27 -04:00
|
|
|
* Default comment fields, filterable by default via the {@see 'comment_form_default_fields'} hook.
|
2013-09-23 13:16:08 -04:00
|
|
|
*
|
2018-05-21 09:13:21 -04:00
|
|
|
* @type string $author Comment author field HTML.
|
|
|
|
* @type string $email Comment author email field HTML.
|
|
|
|
* @type string $url Comment author URL field HTML.
|
|
|
|
* @type string $cookies Comment cookie opt-in field HTML.
|
2013-09-23 13:16:08 -04:00
|
|
|
* }
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $comment_field The comment textarea field HTML.
|
|
|
|
* @type string $must_log_in HTML element for a 'must be logged in to comment' message.
|
2022-07-29 13:06:15 -04:00
|
|
|
* @type string $logged_in_as The HTML for the 'logged in as [user]' message, the Edit profile link,
|
|
|
|
* and the Log out link.
|
2015-11-20 13:56:27 -05:00
|
|
|
* @type string $comment_notes_before HTML element for a message displayed before the comment fields
|
|
|
|
* if the user is not logged in.
|
2014-02-09 22:20:12 -05:00
|
|
|
* Default 'Your email address will not be published.'.
|
2015-11-20 13:56:27 -05:00
|
|
|
* @type string $comment_notes_after HTML element for a message displayed after the textarea field.
|
2016-04-14 14:18:29 -04:00
|
|
|
* @type string $action The comment form element action attribute. Default '/wp-comments-post.php'.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $id_form The comment form element id attribute. Default 'commentform'.
|
|
|
|
* @type string $id_submit The comment submit element id attribute. Default 'submit'.
|
2020-07-07 14:29:04 -04:00
|
|
|
* @type string $class_container The comment form container class attribute. Default 'comment-respond'.
|
2015-10-06 13:17:24 -04:00
|
|
|
* @type string $class_form The comment form element class attribute. Default 'comment-form'.
|
2014-10-01 21:44:15 -04:00
|
|
|
* @type string $class_submit The comment submit element class attribute. Default 'submit'.
|
2014-06-23 20:10:15 -04:00
|
|
|
* @type string $name_submit The comment submit element name attribute. Default 'submit'.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $title_reply The translatable 'reply' button label. Default 'Leave a Reply'.
|
|
|
|
* @type string $title_reply_to The translatable 'reply-to' button label. Default 'Leave a Reply to %s',
|
|
|
|
* where %s is the author of the comment being replied to.
|
2015-09-18 15:18:26 -04:00
|
|
|
* @type string $title_reply_before HTML displayed before the comment form title.
|
|
|
|
* Default: '<h3 id="reply-title" class="comment-reply-title">'.
|
|
|
|
* @type string $title_reply_after HTML displayed after the comment form title.
|
|
|
|
* Default: '</h3>'.
|
2015-09-24 17:33:26 -04:00
|
|
|
* @type string $cancel_reply_before HTML displayed before the cancel reply link.
|
|
|
|
* @type string $cancel_reply_after HTML displayed after the cancel reply link.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $cancel_reply_link The translatable 'cancel reply' button label. Default 'Cancel reply'.
|
|
|
|
* @type string $label_submit The translatable 'submit' button label. Default 'Post a comment'.
|
2015-03-10 15:08:26 -04:00
|
|
|
* @type string $submit_button HTML format for the Submit button.
|
|
|
|
* Default: '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />'.
|
|
|
|
* @type string $submit_field HTML format for the markup surrounding the Submit button and comment hidden
|
2017-01-07 09:51:44 -05:00
|
|
|
* fields. Default: '<p class="form-submit">%1$s %2$s</p>', where %1$s is the
|
2015-03-10 15:08:26 -04:00
|
|
|
* submit button markup and %2$s is the comment hidden fields.
|
2014-02-09 22:20:12 -05:00
|
|
|
* @type string $format The comment form format. Default 'xhtml'. Accepts 'xhtml', 'html5'.
|
2013-09-23 13:16:08 -04:00
|
|
|
* }
|
2022-12-12 06:51:11 -05:00
|
|
|
* @param int|WP_Post $post Optional. Post ID or WP_Post object to generate the form for. Default current post.
|
2010-01-23 13:06:37 -05:00
|
|
|
*/
|
Posts, Post Types: Standardize on `$post` parameter name where appropriate.
This renames the `$post_id` or `$id` parameters to `$post` for functions that accept a post ID or post object:
* `get_sample_permalink()`
* `get_sample_permalink_html()`
* `wp_check_post_lock()`
* `wp_set_post_lock()`
* `get_the_tags()`
* `comment_class()`
* `get_comment_class()`
* `get_comments_link()`
* `get_comments_number()`
* `comments_number()`
* `get_comments_number_text()`
* `comments_open()`
* `pings_open()`
* `comment_form()`
* `do_trackbacks()`
* `pingback()`
* `post_permalink()`
* `get_post_permalink()`
* `get_edit_post_link()`
* `edit_post_link()`
* `get_delete_post_link()`
* `post_class()`
* `get_post_class()`
* `the_attachment_link()`
* `wp_get_attachment_link()`
* `wp_list_post_revisions()`
* `check_and_publish_future_post()`
* `add_ping()`
* `get_pung()`
* `get_to_ping()`
* `wp_get_post_revisions()`
* `wp_get_post_revisions_url()`
Additionally, `$revision_id` is renamed to `$revision` in:
* `wp_restore_post_revision()`
* `wp_delete_post_revision()`
Includes minor documentation improvements for consistency and code layout fixes for better readability.
Follow-up to [1599], [1794], [2881], [3303], [3851], [5302], [6633], [6716], [6985], [7103], [7149], [7747], [8011], [8638], [8643], [8695], [9138], [9273], [11425], [11922], [11956], [12284], [12810], [12923], [13023], [13171], [25567], [27156], [27473], [28558], [28602], [33659], [38852], [47276], [47366], [48622], [49544], [49597], [52095].
See #56243, #55647.
Built from https://develop.svn.wordpress.org/trunk@53715
git-svn-id: http://core.svn.wordpress.org/trunk@53274 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-07-18 13:37:17 -04:00
|
|
|
function comment_form( $args = array(), $post = null ) {
|
|
|
|
$post = get_post( $post );
|
|
|
|
|
2022-10-11 11:45:11 -04:00
|
|
|
// Exit the function if the post is invalid or comments are closed.
|
|
|
|
if ( ! $post || ! comments_open( $post ) ) {
|
2016-10-26 10:48:29 -04:00
|
|
|
/**
|
|
|
|
* Fires after the comment form if comments are closed.
|
|
|
|
*
|
2022-10-11 11:45:11 -04:00
|
|
|
* For backward compatibility, this action also fires if comment_form()
|
|
|
|
* is called with an invalid post object or ID.
|
|
|
|
*
|
2016-10-26 10:48:29 -04:00
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_comments_closed' );
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2022-10-11 11:45:11 -04:00
|
|
|
$post_id = $post->ID;
|
2017-11-30 18:11:00 -05:00
|
|
|
$commenter = wp_get_current_commenter();
|
|
|
|
$user = wp_get_current_user();
|
2012-04-06 15:18:45 -04:00
|
|
|
$user_identity = $user->exists() ? $user->display_name : '';
|
2010-01-26 17:49:05 -05:00
|
|
|
|
2013-08-28 01:28:09 -04:00
|
|
|
$args = wp_parse_args( $args );
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ! isset( $args['format'] ) ) {
|
2013-06-06 11:31:34 -04:00
|
|
|
$args['format'] = current_theme_supports( 'html5', 'comment-form' ) ? 'html5' : 'xhtml';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-06-06 11:31:34 -04:00
|
|
|
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
$req = get_option( 'require_name_email' );
|
|
|
|
$html5 = 'html5' === $args['format'];
|
|
|
|
|
|
|
|
// Define attributes in HTML5 or XHTML syntax.
|
|
|
|
$required_attribute = ( $html5 ? ' required' : ' required="required"' );
|
|
|
|
$checked_attribute = ( $html5 ? ' checked' : ' checked="checked"' );
|
|
|
|
|
2022-08-12 08:11:09 -04:00
|
|
|
// Identify required fields visually and create a message about the indicator.
|
|
|
|
$required_indicator = ' ' . wp_required_field_indicator();
|
|
|
|
$required_text = ' ' . wp_required_field_message();
|
2019-09-10 15:23:55 -04:00
|
|
|
|
|
|
|
$fields = array(
|
|
|
|
'author' => sprintf(
|
|
|
|
'<p class="comment-form-author">%s %s</p>',
|
|
|
|
sprintf(
|
|
|
|
'<label for="author">%s%s</label>',
|
|
|
|
__( 'Name' ),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
( $req ? $required_indicator : '' )
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
|
|
|
sprintf(
|
2022-06-24 17:26:12 -04:00
|
|
|
'<input id="author" name="author" type="text" value="%s" size="30" maxlength="245" autocomplete="name"%s />',
|
2019-09-10 15:23:55 -04:00
|
|
|
esc_attr( $commenter['comment_author'] ),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
( $req ? $required_attribute : '' )
|
2019-09-10 15:23:55 -04:00
|
|
|
)
|
|
|
|
),
|
|
|
|
'email' => sprintf(
|
|
|
|
'<p class="comment-form-email">%s %s</p>',
|
|
|
|
sprintf(
|
|
|
|
'<label for="email">%s%s</label>',
|
|
|
|
__( 'Email' ),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
( $req ? $required_indicator : '' )
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
|
|
|
sprintf(
|
2022-06-24 17:26:12 -04:00
|
|
|
'<input id="email" name="email" %s value="%s" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email"%s />',
|
2019-09-10 15:23:55 -04:00
|
|
|
( $html5 ? 'type="email"' : 'type="text"' ),
|
|
|
|
esc_attr( $commenter['comment_author_email'] ),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
( $req ? $required_attribute : '' )
|
2019-09-10 15:23:55 -04:00
|
|
|
)
|
|
|
|
),
|
|
|
|
'url' => sprintf(
|
|
|
|
'<p class="comment-form-url">%s %s</p>',
|
|
|
|
sprintf(
|
|
|
|
'<label for="url">%s</label>',
|
|
|
|
__( 'Website' )
|
|
|
|
),
|
|
|
|
sprintf(
|
2022-06-24 17:26:12 -04:00
|
|
|
'<input id="url" name="url" %s value="%s" size="30" maxlength="200" autocomplete="url" />',
|
2019-09-10 15:23:55 -04:00
|
|
|
( $html5 ? 'type="url"' : 'type="text"' ),
|
|
|
|
esc_attr( $commenter['comment_author_url'] )
|
|
|
|
)
|
|
|
|
),
|
2010-04-15 12:25:08 -04:00
|
|
|
);
|
|
|
|
|
2018-07-24 13:06:24 -04:00
|
|
|
if ( has_action( 'set_comment_cookies', 'wp_set_comment_cookies' ) && get_option( 'show_comments_cookies_opt_in' ) ) {
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
$consent = empty( $commenter['comment_author_email'] ) ? '' : $checked_attribute;
|
2019-09-10 15:23:55 -04:00
|
|
|
|
|
|
|
$fields['cookies'] = sprintf(
|
|
|
|
'<p class="comment-form-cookies-consent">%s %s</p>',
|
|
|
|
sprintf(
|
|
|
|
'<input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"%s />',
|
|
|
|
$consent
|
|
|
|
),
|
|
|
|
sprintf(
|
|
|
|
'<label for="wp-comment-cookies-consent">%s</label>',
|
|
|
|
__( 'Save my name, email, and website in this browser for the next time I comment.' )
|
|
|
|
)
|
|
|
|
);
|
2018-07-19 20:38:24 -04:00
|
|
|
|
|
|
|
// Ensure that the passed fields include cookies consent.
|
|
|
|
if ( isset( $args['fields'] ) && ! isset( $args['fields']['cookies'] ) ) {
|
|
|
|
$args['fields']['cookies'] = $fields['cookies'];
|
|
|
|
}
|
2018-06-27 22:39:57 -04:00
|
|
|
}
|
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the default comment form fields.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
2018-03-25 15:33:31 -04:00
|
|
|
* @param string[] $fields Array of the default comment fields.
|
2013-09-23 17:21:09 -04:00
|
|
|
*/
|
2019-09-10 15:23:55 -04:00
|
|
|
$fields = apply_filters( 'comment_form_default_fields', $fields );
|
|
|
|
|
2010-04-15 12:25:08 -04:00
|
|
|
$defaults = array(
|
2013-09-23 17:21:09 -04:00
|
|
|
'fields' => $fields,
|
2019-09-10 15:23:55 -04:00
|
|
|
'comment_field' => sprintf(
|
|
|
|
'<p class="comment-form-comment">%s %s</p>',
|
|
|
|
sprintf(
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
'<label for="comment">%s%s</label>',
|
|
|
|
_x( 'Comment', 'noun' ),
|
|
|
|
$required_indicator
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
'<textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525"' . $required_attribute . '></textarea>'
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
|
|
|
'must_log_in' => sprintf(
|
|
|
|
'<p class="must-log-in">%s</p>',
|
|
|
|
sprintf(
|
|
|
|
/* translators: %s: Login URL. */
|
|
|
|
__( 'You must be <a href="%s">logged in</a> to post a comment.' ),
|
|
|
|
/** This filter is documented in wp-includes/link-template.php */
|
|
|
|
wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) )
|
|
|
|
)
|
|
|
|
),
|
|
|
|
'logged_in_as' => sprintf(
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
'<p class="logged-in-as">%s%s</p>',
|
2019-09-10 15:23:55 -04:00
|
|
|
sprintf(
|
2022-07-29 13:06:15 -04:00
|
|
|
/* translators: 1: User name, 2: Edit user link, 3: Logout URL. */
|
|
|
|
__( 'Logged in as %1$s. <a href="%2$s">Edit your profile</a>. <a href="%3$s">Log out?</a>' ),
|
2019-09-10 15:23:55 -04:00
|
|
|
$user_identity,
|
2022-07-29 13:06:15 -04:00
|
|
|
get_edit_user_link(),
|
2019-09-10 15:23:55 -04:00
|
|
|
/** This filter is documented in wp-includes/link-template.php */
|
|
|
|
wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ), $post_id ) )
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
),
|
|
|
|
$required_text
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
|
|
|
'comment_notes_before' => sprintf(
|
|
|
|
'<p class="comment-notes">%s%s</p>',
|
|
|
|
sprintf(
|
|
|
|
'<span id="email-notes">%s</span>',
|
|
|
|
__( 'Your email address will not be published.' )
|
|
|
|
),
|
Comments: Mark comment text field as required.
Add required asterisk to the comment text field. Historically, the name and email fields are marked as required, but the comment text field is not, though it is actually a required field.
Props infected, solarissmoke, rianrietveld, afercia, sabernhardt, strider72, mai21, audrasjb.
Fixes #16206.
Built from https://develop.svn.wordpress.org/trunk@52029
git-svn-id: http://core.svn.wordpress.org/trunk@51621 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2021-11-07 16:14:58 -05:00
|
|
|
$required_text
|
2019-09-10 15:23:55 -04:00
|
|
|
),
|
2015-06-19 10:15:26 -04:00
|
|
|
'comment_notes_after' => '',
|
2016-04-14 14:18:29 -04:00
|
|
|
'action' => site_url( '/wp-comments-post.php' ),
|
2010-04-15 12:25:08 -04:00
|
|
|
'id_form' => 'commentform',
|
|
|
|
'id_submit' => 'submit',
|
2020-07-07 14:29:04 -04:00
|
|
|
'class_container' => 'comment-respond',
|
2015-10-06 13:17:24 -04:00
|
|
|
'class_form' => 'comment-form',
|
2014-10-01 21:44:15 -04:00
|
|
|
'class_submit' => 'submit',
|
2014-06-23 20:10:15 -04:00
|
|
|
'name_submit' => 'submit',
|
2010-04-15 12:25:08 -04:00
|
|
|
'title_reply' => __( 'Leave a Reply' ),
|
2019-09-02 20:41:05 -04:00
|
|
|
/* translators: %s: Author of the comment being replied to. */
|
2010-04-15 12:25:08 -04:00
|
|
|
'title_reply_to' => __( 'Leave a Reply to %s' ),
|
2015-09-18 15:18:26 -04:00
|
|
|
'title_reply_before' => '<h3 id="reply-title" class="comment-reply-title">',
|
|
|
|
'title_reply_after' => '</h3>',
|
2015-09-24 17:33:26 -04:00
|
|
|
'cancel_reply_before' => ' <small>',
|
|
|
|
'cancel_reply_after' => '</small>',
|
2010-04-15 12:25:08 -04:00
|
|
|
'cancel_reply_link' => __( 'Cancel reply' ),
|
|
|
|
'label_submit' => __( 'Post Comment' ),
|
2015-03-10 15:08:26 -04:00
|
|
|
'submit_button' => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />',
|
|
|
|
'submit_field' => '<p class="form-submit">%1$s %2$s</p>',
|
2013-03-13 16:31:43 -04:00
|
|
|
'format' => 'xhtml',
|
2010-04-15 12:25:08 -04:00
|
|
|
);
|
|
|
|
|
2013-09-23 17:21:09 -04:00
|
|
|
/**
|
2016-05-22 14:26:27 -04:00
|
|
|
* Filters the comment form default arguments.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
2016-05-23 14:59:27 -04:00
|
|
|
* Use {@see 'comment_form_default_fields'} to filter the comment fields.
|
2013-09-23 17:21:09 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
|
|
|
* @param array $defaults The default comment form arguments.
|
|
|
|
*/
|
2010-01-23 13:06:37 -05:00
|
|
|
$args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );
|
2010-04-28 03:17:20 -04:00
|
|
|
|
2020-10-28 12:57:08 -04:00
|
|
|
// Ensure that the filtered arguments contain all required default values.
|
2015-05-18 21:04:25 -04:00
|
|
|
$args = array_merge( $defaults, $args );
|
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Remove `aria-describedby` from the email field if there's no associated description.
|
Code Modernization: Replace usage of `strpos()` with `str_contains()`.
`str_contains()` was introduced in PHP 8.0 to perform a case-sensitive check indicating if the string to search in (haystack) contains the given substring (needle).
WordPress core includes a polyfill for `str_contains()` on PHP < 8.0 as of WordPress 5.9.
This commit replaces `false !== strpos( ... )` with `str_contains()` in core files, making the code more readable and consistent, as well as better aligned with modern development practices.
Follow-up to [52039], [52040], [52326], [55703], [55710], [55987].
Props Soean, spacedmonkey, costdev, dingo_d, azaozz, mikeschroder, flixos90, peterwilsoncc, SergeyBiryukov.
Fixes #58206.
Built from https://develop.svn.wordpress.org/trunk@55988
git-svn-id: http://core.svn.wordpress.org/trunk@55500 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-06-22 10:36:26 -04:00
|
|
|
if ( isset( $args['fields']['email'] ) && ! str_contains( $args['comment_notes_before'], 'id="email-notes"' ) ) {
|
2019-09-10 21:51:54 -04:00
|
|
|
$args['fields']['email'] = str_replace(
|
|
|
|
' aria-describedby="email-notes"',
|
|
|
|
'',
|
|
|
|
$args['fields']['email']
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2016-10-26 10:48:29 -04:00
|
|
|
/**
|
|
|
|
* Fires before the comment form.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_before' );
|
|
|
|
?>
|
2020-07-07 14:29:04 -04:00
|
|
|
<div id="respond" class="<?php echo esc_attr( $args['class_container'] ); ?>">
|
2015-09-24 18:00:28 -04:00
|
|
|
<?php
|
2016-10-26 10:48:29 -04:00
|
|
|
echo $args['title_reply_before'];
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2023-02-20 20:45:24 -05:00
|
|
|
comment_form_title( $args['title_reply'], $args['title_reply_to'], true, $post_id );
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2021-11-15 21:14:59 -05:00
|
|
|
if ( get_option( 'thread_comments' ) ) {
|
|
|
|
echo $args['cancel_reply_before'];
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2021-11-15 21:14:59 -05:00
|
|
|
cancel_comment_reply_link( $args['cancel_reply_link'] );
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2021-11-15 21:14:59 -05:00
|
|
|
echo $args['cancel_reply_after'];
|
|
|
|
}
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2016-10-26 10:48:29 -04:00
|
|
|
echo $args['title_reply_after'];
|
2015-09-18 15:18:26 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) :
|
2019-09-10 15:23:55 -04:00
|
|
|
|
2016-10-26 10:48:29 -04:00
|
|
|
echo $args['must_log_in'];
|
|
|
|
/**
|
|
|
|
* Fires after the HTML-formatted 'must log in after' message in the comment form.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_must_log_in_after' );
|
2019-09-10 15:23:55 -04:00
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
else :
|
2019-09-10 15:23:55 -04:00
|
|
|
|
|
|
|
printf(
|
|
|
|
'<form action="%s" method="post" id="%s" class="%s"%s>',
|
|
|
|
esc_url( $args['action'] ),
|
|
|
|
esc_attr( $args['id_form'] ),
|
|
|
|
esc_attr( $args['class_form'] ),
|
|
|
|
( $html5 ? ' novalidate' : '' )
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires at the top of the comment form, inside the form tag.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_top' );
|
|
|
|
|
|
|
|
if ( is_user_logged_in() ) :
|
|
|
|
|
2015-09-24 18:00:28 -04:00
|
|
|
/**
|
2019-09-10 15:23:55 -04:00
|
|
|
* Filters the 'logged in' message for the comment form for display.
|
2015-09-24 18:00:28 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
2019-09-10 15:23:55 -04:00
|
|
|
*
|
2022-07-29 13:06:15 -04:00
|
|
|
* @param string $args_logged_in The HTML for the 'logged in as [user]' message,
|
|
|
|
* the Edit profile link, and the Log out link.
|
2019-09-10 15:23:55 -04:00
|
|
|
* @param array $commenter An array containing the comment author's
|
|
|
|
* username, email, and URL.
|
|
|
|
* @param string $user_identity If the commenter is a registered user,
|
|
|
|
* the display name, blank otherwise.
|
2015-09-24 18:00:28 -04:00
|
|
|
*/
|
2019-09-10 15:23:55 -04:00
|
|
|
echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity );
|
2016-10-26 10:48:29 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Fires after the is_user_logged_in() check in the comment form.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
|
|
|
* @param array $commenter An array containing the comment author's
|
|
|
|
* username, email, and URL.
|
|
|
|
* @param string $user_identity If the commenter is a registered user,
|
|
|
|
* the display name, blank otherwise.
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_logged_in_after', $commenter, $user_identity );
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
else :
|
2015-03-10 15:08:26 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
echo $args['comment_notes_before'];
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
endif;
|
2015-03-10 15:08:26 -04:00
|
|
|
|
2019-09-10 21:51:54 -04:00
|
|
|
// Prepare an array of all fields, including the textarea.
|
2019-09-10 15:23:55 -04:00
|
|
|
$comment_fields = array( 'comment' => $args['comment_field'] ) + (array) $args['fields'];
|
2015-03-10 15:08:26 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Filters the comment form fields, including the textarea.
|
|
|
|
*
|
|
|
|
* @since 4.4.0
|
|
|
|
*
|
|
|
|
* @param array $comment_fields The comment fields.
|
|
|
|
*/
|
|
|
|
$comment_fields = apply_filters( 'comment_form_fields', $comment_fields );
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Get an array of field names, excluding the textarea.
|
2019-09-10 15:23:55 -04:00
|
|
|
$comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) );
|
|
|
|
|
2020-01-28 19:45:18 -05:00
|
|
|
// Get the first and the last field name, excluding the textarea.
|
2019-09-10 15:23:55 -04:00
|
|
|
$first_field = reset( $comment_field_keys );
|
|
|
|
$last_field = end( $comment_field_keys );
|
|
|
|
|
|
|
|
foreach ( $comment_fields as $name => $field ) {
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
if ( 'comment' === $name ) {
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Filters the content of the comment textarea field for display.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
|
|
|
* @param string $args_comment_field The content of the comment textarea field.
|
|
|
|
*/
|
|
|
|
echo apply_filters( 'comment_form_field_comment', $field );
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
echo $args['comment_notes_after'];
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
} elseif ( ! is_user_logged_in() ) {
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
if ( $first_field === $name ) {
|
2016-10-26 10:48:29 -04:00
|
|
|
/**
|
2019-09-10 15:23:55 -04:00
|
|
|
* Fires before the comment fields in the comment form, excluding the textarea.
|
2016-10-26 10:48:29 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
2019-09-10 15:23:55 -04:00
|
|
|
do_action( 'comment_form_before_fields' );
|
|
|
|
}
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Filters a comment form field for display.
|
|
|
|
*
|
2021-09-21 14:21:00 -04:00
|
|
|
* The dynamic portion of the hook name, `$name`, refers to the name
|
2021-07-03 17:42:59 -04:00
|
|
|
* of the comment form field.
|
|
|
|
*
|
|
|
|
* Possible hook names include:
|
|
|
|
*
|
|
|
|
* - `comment_form_field_comment`
|
|
|
|
* - `comment_form_field_author`
|
|
|
|
* - `comment_form_field_email`
|
|
|
|
* - `comment_form_field_url`
|
|
|
|
* - `comment_form_field_cookies`
|
2019-09-10 15:23:55 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*
|
|
|
|
* @param string $field The HTML-formatted output of the comment form field.
|
|
|
|
*/
|
|
|
|
echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
|
2015-11-20 13:56:27 -05:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
if ( $last_field === $name ) {
|
2016-10-26 10:48:29 -04:00
|
|
|
/**
|
2019-09-10 15:23:55 -04:00
|
|
|
* Fires after the comment fields in the comment form, excluding the textarea.
|
2016-10-26 10:48:29 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
2019-09-10 15:23:55 -04:00
|
|
|
do_action( 'comment_form_after_fields' );
|
2015-11-20 13:56:27 -05:00
|
|
|
}
|
2016-10-26 10:48:29 -04:00
|
|
|
}
|
2019-09-10 15:23:55 -04:00
|
|
|
}
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
$submit_button = sprintf(
|
|
|
|
$args['submit_button'],
|
|
|
|
esc_attr( $args['name_submit'] ),
|
|
|
|
esc_attr( $args['id_submit'] ),
|
|
|
|
esc_attr( $args['class_submit'] ),
|
|
|
|
esc_attr( $args['label_submit'] )
|
|
|
|
);
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Filters the submit button for the comment form to display.
|
|
|
|
*
|
|
|
|
* @since 4.2.0
|
|
|
|
*
|
|
|
|
* @param string $submit_button HTML markup for the submit button.
|
|
|
|
* @param array $args Arguments passed to comment_form().
|
|
|
|
*/
|
|
|
|
$submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args );
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
$submit_field = sprintf(
|
|
|
|
$args['submit_field'],
|
|
|
|
$submit_button,
|
|
|
|
get_comment_id_fields( $post_id )
|
|
|
|
);
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
|
|
|
* Filters the submit field for the comment form to display.
|
|
|
|
*
|
|
|
|
* The submit field includes the submit button, hidden fields for the
|
|
|
|
* comment form, and any wrapper markup.
|
|
|
|
*
|
|
|
|
* @since 4.2.0
|
|
|
|
*
|
|
|
|
* @param string $submit_field HTML markup for the submit field.
|
|
|
|
* @param array $args Arguments passed to comment_form().
|
|
|
|
*/
|
|
|
|
echo apply_filters( 'comment_form_submit_field', $submit_field, $args );
|
2015-09-24 18:00:28 -04:00
|
|
|
|
2019-09-10 15:23:55 -04:00
|
|
|
/**
|
2019-10-31 17:20:02 -04:00
|
|
|
* Fires at the bottom of the comment form, inside the closing form tag.
|
2019-09-10 15:23:55 -04:00
|
|
|
*
|
|
|
|
* @since 1.5.0
|
|
|
|
*
|
|
|
|
* @param int $post_id The post ID.
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form', $post_id );
|
|
|
|
|
|
|
|
echo '</form>';
|
|
|
|
|
|
|
|
endif;
|
|
|
|
?>
|
2016-10-26 10:48:29 -04:00
|
|
|
</div><!-- #respond -->
|
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires after the comment form.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'comment_form_after' );
|
2010-01-23 13:06:37 -05:00
|
|
|
}
|