2006-04-19 12:13:28 +02:00
< ? php
2007-12-26 18:18:13 +01:00
/**
* Comment template functions
*
* These functions are meant to live inside of the WordPress loop .
*
* @ package WordPress
* @ subpackage Template
2006-04-19 12:13:28 +02:00
*/
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02:00
* If the comment has an empty comment_author field , then 'Anonymous' person is
* assumed .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to retrieve the author . Default current comment .
2007-12-26 18:18:13 +01:00
* @ return string The comment author
*/
2010-01-25 18:34:13 +01:00
function get_comment_author ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2013-08-27 15:17:09 +02:00
if ( empty ( $comment -> comment_author ) ) {
if ( $comment -> user_id && $user = get_userdata ( $comment -> user_id ) )
$author = $user -> display_name ;
else
2008-11-19 07:58:44 +01:00
$author = __ ( 'Anonymous' );
} else {
2006-04-19 12:13:28 +02:00
$author = $comment -> comment_author ;
2008-11-19 07:58:44 +01:00
}
2013-08-27 15:17:09 +02:00
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment author name .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $author The comment author ' s username .
*/
2013-08-27 15:17:09 +02:00
return apply_filters ( 'get_comment_author' , $author );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Displays the author of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-01-26 23:49:05 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the author . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_author ( $comment_ID = 0 ) {
2013-09-23 23:21:09 +02:00
$author = get_comment_author ( $comment_ID );
/**
* Filter the comment author ' s name for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $author The comment author ' s username .
*/
$author = apply_filters ( 'comment_author' , $author );
2006-04-19 12:13:28 +02:00
echo $author ;
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the email of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the author ' s email . Default current comment .
2007-12-26 18:18:13 +01:00
* @ return string The current comment author ' s email
*/
2010-01-25 18:34:13 +01:00
function get_comment_author_email ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2013-09-23 23:21:09 +02:00
/**
* Filter the comment author ' s returned email address .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $comment -> comment_author_email The comment author ' s email address .
*/
return apply_filters ( 'get_comment_author_email' , $comment -> comment_author_email );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the email of the author of the current global $comment .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02:00
* Care should be taken to protect the email address and assure that email
* harvesters do not capture your commentors ' email address . Most assume that
* their email address will not appear in raw form on the blog . Doing so will
* enable anyone , including those that people don ' t want to get the email
* address and use it for their own means good and bad .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-01-25 18:34:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the author ' s email . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_author_email ( $comment_ID = 0 ) {
2013-09-23 23:21:09 +02:00
$author_email = get_comment_author_email ( $comment_ID );
/**
* Filter the comment author ' s email for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $author_email The comment author ' s email address .
*/
echo apply_filters ( 'author_email' , $author_email );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the html email link to the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02:00
* Care should be taken to protect the email address and assure that email
* harvesters do not capture your commentors ' email address . Most assume that
* their email address will not appear in raw form on the blog . Doing so will
* enable anyone , including those that people don ' t want to get the email
* address and use it for their own means good and bad .
2007-12-26 18:18:13 +01:00
*
* @ global object $comment The current Comment row object
2013-09-23 06:16:08 +02:00
* @ since 0.71
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param string $linktext 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 .
2007-12-26 18:18:13 +01:00
*/
2013-09-23 06:16:08 +02:00
function comment_author_email_link ( $linktext = '' , $before = '' , $after = '' ) {
2008-10-31 19:05:25 +01:00
if ( $link = get_comment_author_email_link ( $linktext , $before , $after ) )
echo $link ;
}
/**
* Return the html email link to the author of the current comment .
*
* Care should be taken to protect the email address and assure that email
* harvesters do not capture your commentors ' email address . Most assume that
* their email address will not appear in raw form on the blog . Doing so will
* enable anyone , including those that people don ' t want to get the email
* address and use it for their own means good and bad .
*
2013-09-23 06:16:08 +02:00
* @ global object $comment The current Comment row object .
*
2008-10-31 19:05:25 +01:00
* @ since 2.7
*
2013-09-23 06:16:08 +02:00
* @ param string $linktext 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 .
2008-10-31 19:05:25 +01:00
*/
2013-09-23 06:16:08 +02:00
function get_comment_author_email_link ( $linktext = '' , $before = '' , $after = '' ) {
2006-04-19 12:13:28 +02:00
global $comment ;
2013-09-23 23:21:09 +02:00
/**
* Filter the comment author ' s email for display .
*
* Care should be taken to protect the email address and assure that email
* harvesters do not capture your commentors ' email address .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $comment -> comment_author_email The comment author ' s email address .
*/
$email = apply_filters ( 'comment_email' , $comment -> comment_author_email );
2006-04-19 12:13:28 +02:00
if (( ! empty ( $email )) && ( $email != '@' )) {
$display = ( $linktext != '' ) ? $linktext : $email ;
2008-10-31 19:05:25 +01:00
$return = $before ;
$return .= " <a href='mailto: $email '> $display </a> " ;
$return .= $after ;
return $return ;
} else {
return '' ;
2006-04-19 12:13:28 +02:00
}
}
2007-12-26 18:18:13 +01:00
/**
2013-09-19 07:56:10 +02:00
* Retrieve the HTML link to the URL of the author of the current comment .
2013-09-22 12:16:09 +02:00
*
2013-09-19 07:56:10 +02:00
* Both get_comment_author_url () and get_comment_author () rely on get_comment (),
* which falls back to the global comment variable if the $comment_ID argument is empty .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the author ' s link . Default current comment .
2013-09-19 07:56:10 +02:00
* @ return string The comment author name or HTML link for author ' s URL .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function get_comment_author_link ( $comment_ID = 0 ) {
$url = get_comment_author_url ( $comment_ID );
$author = get_comment_author ( $comment_ID );
2006-04-19 12:13:28 +02:00
if ( empty ( $url ) || 'http://' == $url )
$return = $author ;
else
2008-11-18 23:06:51 +01:00
$return = " <a href=' $url ' rel='external nofollow' class='url'> $author </a> " ;
2013-09-23 23:21:09 +02:00
/**
* Filter the comment author ' s link for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $return The HTML - formatted comment author link . Empty for an invalid URL .
*/
return apply_filters ( 'get_comment_author_link' , $return );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the html link to the url of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-06-06 07:16:32 +02:00
* @ see get_comment_author_link () Echoes result
2010-01-25 18:34:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the author ' s link . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_author_link ( $comment_ID = 0 ) {
echo get_comment_author_link ( $comment_ID );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the IP address of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the author ' s IP address . Default current comment .
2010-01-25 18:34:13 +01:00
* @ return string The comment author ' s IP address .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function get_comment_author_IP ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2013-09-23 23:21:09 +02:00
/**
* Filter the comment author ' s returned IP address .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $comment -> comment_author_IP The comment author ' s IP address .
*/
return apply_filters ( 'get_comment_author_IP' , $comment -> comment_author_IP );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the IP address of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-01-25 18:34:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the author ' s IP address . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_author_IP ( $comment_ID = 0 ) {
echo get_comment_author_IP ( $comment_ID );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the url of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the author ' s URL . Default current comment .
2007-12-26 18:18:13 +01:00
* @ return string
*/
2010-01-25 18:34:13 +01:00
function get_comment_author_url ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2009-05-10 09:26:30 +02:00
$url = ( 'http://' == $comment -> comment_author_url ) ? '' : $comment -> comment_author_url ;
2009-07-19 01:21:50 +02:00
$url = esc_url ( $url , array ( 'http' , 'https' ) );
2013-10-30 15:39:10 +01:00
/**
* Filter the comment author ' s URL .
*
* @ since 1.5 . 0
*
* @ param string $url The comment author ' s URL .
*/
return apply_filters ( 'get_comment_author_url' , $url );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the url of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-01-25 18:34:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the author ' s URL . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_author_url ( $comment_ID = 0 ) {
2013-09-23 23:21:09 +02:00
$author_url = get_comment_author_url ( $comment_ID );
/**
* Filter the comment author ' s URL for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $author_url The comment author ' s URL .
*/
echo apply_filters ( 'comment_url' , $author_url );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieves the HTML link of the url of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02:00
* $linktext 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 $linktext
* will be ignored .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02: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 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param string $linktext 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 .
* @ return string The HTML link between the $before and $after parameters .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function get_comment_author_url_link ( $linktext = '' , $before = '' , $after = '' ) {
$url = get_comment_author_url ();
$display = ( $linktext != '' ) ? $linktext : $url ;
$display = str_replace ( 'http://www.' , '' , $display );
$display = str_replace ( 'http://' , '' , $display );
if ( '/' == substr ( $display , - 1 ) )
$display = substr ( $display , 0 , - 1 );
$return = " $before <a href=' $url ' rel='external'> $display </a> $after " ;
2013-09-23 23:21:09 +02:00
/**
* Filter the comment author ' s returned URL link .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $return The HTML - formatted comment author URL link .
*/
return apply_filters ( 'get_comment_author_url_link' , $return );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Displays the HTML link of the url of the author of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param string $linktext 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 .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function comment_author_url_link ( $linktext = '' , $before = '' , $after = '' ) {
echo get_comment_author_url_link ( $linktext , $before , $after );
}
2008-08-21 01:48:09 +02:00
/**
* Generates semantic classes for each comment element
*
2008-09-24 22:02:41 +02:00
* @ since 2.7 . 0
2008-08-21 01:48:09 +02:00
*
2013-09-23 06:16:08 +02:00
* @ param string | array $class Optional . One or more classes to add to the class list . Default empty .
* @ param int $comment_id Optional . Comment ID . Default current comment .
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
* @ param bool $echo Optional . Whether comment_class should echo or return . Default true .
2008-08-21 01:48:09 +02:00
*/
2008-09-11 21:25:50 +02:00
function comment_class ( $class = '' , $comment_id = null , $post_id = null , $echo = true ) {
// Separates classes with a single space, collates classes for comment DIV
$class = 'class="' . join ( ' ' , get_comment_class ( $class , $comment_id , $post_id ) ) . '"' ;
if ( $echo )
echo $class ;
else
return $class ;
2008-08-21 01:48:09 +02:00
}
/**
* Returns the classes for the comment div as an array
*
2008-09-24 22:02:41 +02:00
* @ since 2.7 . 0
2008-08-21 01:48:09 +02:00
*
2013-09-23 06:16:08 +02:00
* @ param string | array $class Optional . One or more classes to add to the class list . Default empty .
* @ param int $comment_id Optional . Comment ID . Default current comment .
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
* @ return array An array of classes .
2008-08-21 01:48:09 +02:00
*/
function get_comment_class ( $class = '' , $comment_id = null , $post_id = null ) {
2008-09-24 06:45:50 +02:00
global $comment_alt , $comment_depth , $comment_thread_alt ;
2008-08-21 01:48:09 +02:00
$comment = get_comment ( $comment_id );
$classes = array ();
// Get the comment type (comment, trackback),
2008-10-29 23:25:06 +01:00
$classes [] = ( empty ( $comment -> comment_type ) ) ? 'comment' : $comment -> comment_type ;
2008-08-21 01:48:09 +02:00
// If the comment author has an id (registered), then print the log in name
if ( $comment -> user_id > 0 && $user = get_userdata ( $comment -> user_id ) ) {
// For all registered users, 'byuser'
2009-04-05 19:38:19 +02:00
$classes [] = 'byuser' ;
2009-05-22 23:31:42 +02:00
$classes [] = 'comment-author-' . sanitize_html_class ( $user -> user_nicename , $comment -> user_id );
2008-08-21 01:48:09 +02:00
// For comment authors who are the author of the post
if ( $post = get_post ( $post_id ) ) {
if ( $comment -> user_id === $post -> post_author )
$classes [] = 'bypostauthor' ;
}
}
if ( empty ( $comment_alt ) )
$comment_alt = 0 ;
2008-09-24 06:45:50 +02:00
if ( empty ( $comment_depth ) )
$comment_depth = 1 ;
if ( empty ( $comment_thread_alt ) )
$comment_thread_alt = 0 ;
2008-08-21 01:48:09 +02:00
2008-09-11 21:25:50 +02:00
if ( $comment_alt % 2 ) {
2008-08-21 01:48:09 +02:00
$classes [] = 'odd' ;
2008-09-11 21:25:50 +02:00
$classes [] = 'alt' ;
} else {
2008-08-21 01:48:09 +02:00
$classes [] = 'even' ;
2008-09-11 21:25:50 +02:00
}
2008-08-21 01:48:09 +02:00
$comment_alt ++ ;
2008-09-24 06:45:50 +02:00
// Alt for top-level comments
if ( 1 == $comment_depth ) {
if ( $comment_thread_alt % 2 ) {
$classes [] = 'thread-odd' ;
$classes [] = 'thread-alt' ;
} else {
$classes [] = 'thread-even' ;
}
$comment_thread_alt ++ ;
}
$classes [] = " depth- $comment_depth " ;
2008-08-21 01:48:09 +02:00
if ( ! empty ( $class ) ) {
if ( ! is_array ( $class ) )
$class = preg_split ( '#\s+#' , $class );
$classes = array_merge ( $classes , $class );
}
2009-08-18 18:05:07 +02:00
$classes = array_map ( 'esc_attr' , $classes );
2013-09-23 23:21:09 +02:00
/**
* Filter the returned CSS classes for the current comment .
*
* @ since 2.7 . 0
*
* @ param array $classes An array of comment classes .
* @ param string $class A comma - separated list of additional classes added to the list .
* @ param int $comment_id The comment id .
* @ param int | WP_Post $post_id The post ID or WP_Post object .
*/
return apply_filters ( 'comment_class' , $classes , $class , $comment_id , $post_id );
2008-08-21 01:48:09 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the comment date of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param string $d Optional . The format of the date . Default user ' s setting .
* @ param int $comment_ID Optional . The ID of the comment for which to get the date . Default current comment .
* @ return string The comment ' s date .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function get_comment_date ( $d = '' , $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2006-04-19 12:13:28 +02:00
if ( '' == $d )
2009-05-14 04:00:32 +02:00
$date = mysql2date ( get_option ( 'date_format' ), $comment -> comment_date );
2006-04-19 12:13:28 +02:00
else
$date = mysql2date ( $d , $comment -> comment_date );
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment date .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string | int $date Formatted date string or Unix timestamp .
* @ param string $d The format of the date .
*/
return apply_filters ( 'get_comment_date' , $date , $d );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the comment date of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param string $d Optional . The format of the date . Default user ' s settings .
* @ param int $comment_ID Optional . The ID of the comment for which to print the date . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_date ( $d = '' , $comment_ID = 0 ) {
echo get_comment_date ( $d , $comment_ID );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the excerpt of the current comment .
2007-12-26 18:18:13 +01:00
*
2013-05-08 23:27:31 +02:00
* Will cut each word and only output the first 20 words with '…' at the end .
* If the word count is less than 20 , then no truncating is done and no '…'
2007-12-26 18:18:13 +01:00
* will appear .
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the excerpt . Default current comment .
* @ return string The maybe truncated comment with 20 words or less .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function get_comment_excerpt ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2006-04-19 12:13:28 +02:00
$comment_text = strip_tags ( $comment -> comment_content );
$blah = explode ( ' ' , $comment_text );
if ( count ( $blah ) > 20 ) {
$k = 20 ;
$use_dotdotdot = 1 ;
} else {
$k = count ( $blah );
$use_dotdotdot = 0 ;
}
$excerpt = '' ;
for ( $i = 0 ; $i < $k ; $i ++ ) {
$excerpt .= $blah [ $i ] . ' ' ;
}
2013-05-08 23:27:31 +02:00
$excerpt .= ( $use_dotdotdot ) ? '…' : '' ;
2006-04-19 12:13:28 +02:00
return apply_filters ( 'get_comment_excerpt' , $excerpt );
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the excerpt of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.2 . 0
2010-01-25 18:34:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the excerpt . Default current comment .
2007-12-26 18:18:13 +01:00
*/
2010-01-25 18:34:13 +01:00
function comment_excerpt ( $comment_ID = 0 ) {
2013-09-23 23:21:09 +02:00
$comment_excerpt = get_comment_excerpt ( $comment_ID );
/**
* Filter the comment excerpt for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $comment_excerpt The comment excerpt text .
*/
echo apply_filters ( 'comment_excerpt' , $comment_excerpt );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the comment id of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ return int The comment ID .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function get_comment_ID () {
global $comment ;
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment ID .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param int $comment -> comment_ID The current comment ID .
*/
return apply_filters ( 'get_comment_ID' , $comment -> comment_ID );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Display the comment id of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*/
2006-04-19 12:13:28 +02:00
function comment_ID () {
echo get_comment_ID ();
}
2007-12-26 18:18:13 +01:00
/**
2008-10-27 17:31:26 +01:00
* Retrieve the link to a given comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param mixed $comment Optional . Comment to retrieve . Default current comment .
* @ param array $args Optional . An array of arguments to override the defaults . @ see get_page_of_comment ()
2009-03-13 22:58:18 +01:00
* @ return string The permalink to the given comment .
2007-12-26 18:18:13 +01:00
*/
2008-11-20 07:41:55 +01:00
function get_comment_link ( $comment = null , $args = array () ) {
global $wp_rewrite , $in_comment_loop ;
2008-10-27 17:31:26 +01:00
2008-08-05 00:29:37 +02:00
$comment = get_comment ( $comment );
2008-10-27 17:31:26 +01:00
2008-11-20 07:41:55 +01:00
// Backwards compat
if ( ! is_array ( $args ) ) {
$page = $args ;
$args = array ();
$args [ 'page' ] = $page ;
}
$defaults = array ( 'type' => 'all' , 'page' => '' , 'per_page' => '' , 'max_depth' => '' );
$args = wp_parse_args ( $args , $defaults );
if ( '' === $args [ 'per_page' ] && get_option ( 'page_comments' ) )
2008-12-04 21:26:43 +01:00
$args [ 'per_page' ] = get_option ( 'comments_per_page' );
2008-11-20 07:41:55 +01:00
2009-01-20 21:55:57 +01:00
if ( empty ( $args [ 'per_page' ]) ) {
2008-11-20 07:41:55 +01:00
$args [ 'per_page' ] = 0 ;
$args [ 'page' ] = 0 ;
}
if ( $args [ 'per_page' ] ) {
if ( '' == $args [ 'page' ] )
$args [ 'page' ] = ( ! empty ( $in_comment_loop ) ) ? get_query_var ( 'cpage' ) : get_page_of_comment ( $comment -> comment_ID , $args );
2008-10-27 17:31:26 +01:00
if ( $wp_rewrite -> using_permalinks () )
2009-03-13 22:58:18 +01:00
$link = user_trailingslashit ( trailingslashit ( get_permalink ( $comment -> comment_post_ID ) ) . 'comment-page-' . $args [ 'page' ], 'comment' );
2008-10-27 17:31:26 +01:00
else
2009-03-13 22:58:18 +01:00
$link = add_query_arg ( 'cpage' , $args [ 'page' ], get_permalink ( $comment -> comment_post_ID ) );
2008-10-27 17:31:26 +01:00
} else {
2009-03-13 22:58:18 +01:00
$link = get_permalink ( $comment -> comment_post_ID );
2008-10-27 17:31:26 +01:00
}
2009-03-13 22:58:18 +01:00
2013-09-23 23:21:09 +02:00
$link = $link . '#comment-' . $comment -> comment_ID ;
/**
* Filter the returned single comment permalink .
*
* @ since 2.8 . 0
*
* @ param string $link The comment permalink with '#comment-$id' appended .
* @ param object $comment The current comment object .
* @ param array $args An array of arguments to override the defaults . @ see get_page_of_comment ()
*/
return apply_filters ( 'get_comment_link' , $link , $comment , $args );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Retrieve the link to the current post comments .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
* @ return string The link to the comments .
2007-12-26 18:18:13 +01:00
*/
2013-09-23 06:16:08 +02:00
function get_comments_link ( $post_id = 0 ) {
2013-09-23 23:21:09 +02:00
$comments_link = get_permalink ( $post_id ) . '#comments' ;
/**
* Filter the returned post comments permalink .
*
* @ since
*
* @ param string $comments_link The post comments permalink with '#comments' appended .
* @ param int | WP_Post $post_id The post ID or WP_Post object .
*/
return apply_filters ( 'get_comments_link' , $comments_link , $post_id );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Display the link to the current post comments .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param string $deprecated Not Used .
* @ param bool $deprecated_2 Not Used .
2007-12-26 18:18:13 +01:00
*/
2010-01-09 11:03:55 +01:00
function comments_link ( $deprecated = '' , $deprecated_2 = '' ) {
2009-12-30 17:23:39 +01:00
if ( ! empty ( $deprecated ) )
2010-01-09 11:03:55 +01:00
_deprecated_argument ( __FUNCTION__ , '0.72' );
if ( ! empty ( $deprecated_2 ) )
_deprecated_argument ( __FUNCTION__ , '1.3' );
2013-03-06 20:57:31 +01:00
echo esc_url ( get_comments_link () );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the amount of comments a post has .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
* @ return int The number of comments a post has .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function get_comments_number ( $post_id = 0 ) {
2010-09-04 17:51:04 +02:00
$post_id = absint ( $post_id );
2006-04-19 12:13:28 +02:00
if ( ! $post_id )
2010-08-28 13:57:28 +02:00
$post_id = get_the_ID ();
2006-04-19 12:13:28 +02:00
$post = get_post ( $post_id );
if ( ! isset ( $post -> comment_count ) )
$count = 0 ;
else
$count = $post -> comment_count ;
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment count for a post .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param int $count The number of comments a post has .
* @ param int | WP_Post $post_id The post ID or WP_Post object .
*/
return apply_filters ( 'get_comments_number' , $count , $post_id );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the language string for the number of comments the current post has .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02: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 .
2007-12-26 18:18:13 +01:00
* @ param string $deprecated Not used .
*/
2007-03-26 01:18:19 +02:00
function comments_number ( $zero = false , $one = false , $more = false , $deprecated = '' ) {
2009-12-30 17:23:39 +01:00
if ( ! empty ( $deprecated ) )
2010-01-09 11:03:55 +01:00
_deprecated_argument ( __FUNCTION__ , '1.3' );
2009-12-30 17:23:39 +01:00
2010-11-29 18:34:43 +01:00
$number = get_comments_number ();
2006-11-19 08:45:28 +01:00
if ( $number > 1 )
2008-05-08 19:54:40 +02:00
$output = str_replace ( '%' , number_format_i18n ( $number ), ( false === $more ) ? __ ( '% Comments' ) : $more );
2006-11-19 08:45:28 +01:00
elseif ( $number == 0 )
$output = ( false === $zero ) ? __ ( 'No Comments' ) : $zero ;
else // must be one
$output = ( false === $one ) ? __ ( '1 Comment' ) : $one ;
2013-09-23 23:21:09 +02:00
/**
* Filter the comments count for display .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $output A translatable string formatted based on whether the count is equal to 0 , 1 , or 1 +. @ see _n ()
* @ param int $number The number of post comments .
*/
echo apply_filters ( 'comments_number' , $output , $number );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the text of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the text . Default current comment .
2013-09-21 20:18:09 +02:00
* @ param array $args Optional . An array of arguments . @ see Walker_Comment :: comment ()
* @ return string The comment content .
2007-12-26 18:18:13 +01:00
*/
2013-09-21 20:18:09 +02:00
function get_comment_text ( $comment_ID = 0 , $args = array () ) {
2010-01-25 18:34:13 +01:00
$comment = get_comment ( $comment_ID );
2013-09-21 20:18:09 +02:00
/**
* Filter the text of a comment .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-21 20:18:09 +02:00
*
* @ param string $comment -> comment_content The text of the comment .
* @ param object $comment The comment object .
* @ param array $args An array of arguments . @ see Walker_Comment :: comment ()
*/
return apply_filters ( 'get_comment_text' , $comment -> comment_content , $comment , $args );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-21 20:18:09 +02:00
* Display the text of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
2010-01-25 18:34:13 +01:00
*
2013-09-21 20:18:09 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to print the text .
* Default 0.
* @ param array $args Optional . An array of arguments . @ see Walker_Comment :: comment ()
* Default empty array .
2007-12-26 18:18:13 +01:00
*/
2013-09-21 20:18:09 +02:00
function comment_text ( $comment_ID = 0 , $args = array () ) {
2010-10-25 05:11:01 +02:00
$comment = get_comment ( $comment_ID );
2013-09-21 20:18:09 +02:00
$comment_text = get_comment_text ( $comment_ID , $args );
/**
* Filter the text of a comment to be displayed .
*
2013-10-30 15:39:10 +01:00
* @ since 1.2 . 0
2013-09-21 20:18:09 +02:00
*
* @ param string $comment_text The text of the current comment .
* @ param object $comment The comment object .
* @ param array $args An array of arguments . @ see Walker_Comment :: comment ()
*/
echo apply_filters ( 'comment_text' , $comment_text , $comment , $args );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the comment time of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param string $d Optional . The format of the time . Default user ' s settings .
* @ 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 .
2007-12-26 18:18:13 +01:00
* @ return string The formatted time
*/
2009-05-14 04:00:32 +02:00
function get_comment_time ( $d = '' , $gmt = false , $translate = true ) {
2006-04-19 12:13:28 +02:00
global $comment ;
2009-12-14 11:21:58 +01:00
$comment_date = $gmt ? $comment -> comment_date_gmt : $comment -> comment_date ;
2006-04-19 12:13:28 +02:00
if ( '' == $d )
2009-05-14 04:00:32 +02:00
$date = mysql2date ( get_option ( 'time_format' ), $comment_date , $translate );
2006-04-19 12:13:28 +02:00
else
2009-05-14 04:00:32 +02:00
$date = mysql2date ( $d , $comment_date , $translate );
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment time .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string | int $date The comment time , formatted as a date string or Unix timestamp .
* @ param string $d The date format .
* @ param bool $gmt Whether the GMT date is in use .
* @ param bool $translate Whether the time is translated .
*/
return apply_filters ( 'get_comment_time' , $date , $d , $gmt , $translate );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the comment time of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param string $d Optional . The format of the time . Default user ' s settings .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function comment_time ( $d = '' ) {
echo get_comment_time ( $d );
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve the comment type of the current comment .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int $comment_ID Optional . The ID of the comment for which to get the type . Default current comment .
2007-12-26 18:18:13 +01:00
* @ return string The comment type
*/
2010-01-25 18:34:13 +01:00
function get_comment_type ( $comment_ID = 0 ) {
$comment = get_comment ( $comment_ID );
2006-04-19 12:13:28 +02:00
if ( '' == $comment -> comment_type )
$comment -> comment_type = 'comment' ;
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment type .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param string $comment -> comment_type The type of comment , such as 'comment' , 'pingback' , or 'trackback' .
*/
return apply_filters ( 'get_comment_type' , $comment -> comment_type );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Display the comment type of the current comment .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param string $commenttxt Optional . The string to display for comment type . Default false .
* @ param string $trackbacktxt Optional . The string to display for trackback type . Default false .
* @ param string $pingbacktxt Optional . The string to display for pingback type . Default false .
2007-12-26 18:18:13 +01:00
*/
2013-09-23 06:16:08 +02:00
function comment_type ( $commenttxt = false , $trackbacktxt = false , $pingbacktxt = false ) {
2010-06-30 02:05:18 +02:00
if ( false === $commenttxt ) $commenttxt = _x ( 'Comment' , 'noun' );
if ( false === $trackbacktxt ) $trackbacktxt = __ ( 'Trackback' );
if ( false === $pingbacktxt ) $pingbacktxt = __ ( 'Pingback' );
2006-04-19 12:13:28 +02:00
$type = get_comment_type ();
switch ( $type ) {
case 'trackback' :
echo $trackbacktxt ;
break ;
case 'pingback' :
echo $pingbacktxt ;
break ;
default :
echo $commenttxt ;
}
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Retrieve The current post ' s trackback URL .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02: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 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ return string The trackback URL after being filtered .
2007-12-26 18:18:13 +01:00
*/
2006-04-19 12:13:28 +02:00
function get_trackback_url () {
2013-09-23 23:21:09 +02:00
if ( '' != get_option ( 'permalink_structure' ) )
2007-03-10 07:18:43 +01:00
$tb_url = trailingslashit ( get_permalink ()) . user_trailingslashit ( 'trackback' , 'single_trackback' );
2013-09-23 23:21:09 +02:00
else
2010-08-28 13:57:28 +02:00
$tb_url = get_option ( 'siteurl' ) . '/wp-trackback.php?p=' . get_the_ID ();
2013-09-23 23:21:09 +02:00
/**
* Filter the returned trackback URL .
*
* @ since 2.2 . 0
*
* @ param string $tb_url The trackback URL .
*/
return apply_filters ( 'trackback_url' , $tb_url );
2006-04-19 12:13:28 +02:00
}
2007-08-30 01:08:44 +02:00
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Display the current post ' s trackback URL .
2007-12-26 18:18:13 +01:00
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param bool $deprecated_echo Not used .
2007-12-26 18:18:13 +01:00
* @ return void | string Should only be used to echo the trackback URL , use get_trackback_url () for the result instead .
*/
2009-12-30 17:23:39 +01:00
function trackback_url ( $deprecated_echo = true ) {
if ( $deprecated_echo !== true )
2010-04-11 12:41:54 +02:00
_deprecated_argument ( __FUNCTION__ , '2.5' , __ ( 'Use <code>get_trackback_url()</code> instead if you do not want the value echoed.' ) );
2009-12-30 17:23:39 +01:00
if ( $deprecated_echo )
echo get_trackback_url ();
else
return get_trackback_url ();
2006-04-19 12:13:28 +02:00
}
2010-07-03 07:55:04 +02:00
/**
2013-09-23 06:16:08 +02:00
* Generate and display the RDF for the trackback information of current post .
2010-07-03 07:55:04 +02:00
*
* Deprecated in 3.0 . 0 , and restored in 3.0 . 1.
*
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param int $deprecated Not used ( Was $timezone = 0 ) .
2010-07-03 07:55:04 +02:00
*/
function trackback_rdf ( $deprecated = '' ) {
if ( ! empty ( $deprecated ) )
_deprecated_argument ( __FUNCTION__ , '2.5' );
if ( false !== stripos ( $_SERVER [ 'HTTP_USER_AGENT' ], 'W3C_Validator' ) )
return ;
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 ();
echo '"' . " \n " ;
echo ' dc:identifier="' ;
the_permalink ();
echo '"' . " \n " ;
echo ' dc:title="' . str_replace ( '--' , '--' , wptexturize ( strip_tags ( get_the_title ()))) . '"' . " \n " ;
echo ' trackback:ping="' . get_trackback_url () . '"' . " /> \n " ;
echo '</rdf:RDF>' ;
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Whether the current post is open for comments .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
* @ return bool True if the comments are open .
2007-12-26 18:18:13 +01:00
*/
2012-01-05 21:50:54 +01:00
function comments_open ( $post_id = null ) {
2008-02-04 21:27:45 +01:00
$_post = get_post ( $post_id );
2008-02-05 07:47:27 +01:00
2008-02-04 21:27:45 +01:00
$open = ( 'open' == $_post -> comment_status );
2013-09-23 23:21:09 +02:00
/**
* Filter whether the current post is open for comments .
*
* @ since
*
* @ param bool $open Whether the current post is open for comments .
* @ param int | WP_Post $post_id The post ID or WP_Post object .
*/
2008-02-04 21:27:45 +01:00
return apply_filters ( 'comments_open' , $open , $post_id );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2008-06-22 22:23:23 +02:00
* Whether the current post is open for pings .
2007-12-26 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* @ since 1.5 . 0
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object . Default current post .
2007-12-26 18:18:13 +01:00
* @ return bool True if pings are accepted
*/
2012-01-05 21:50:54 +01:00
function pings_open ( $post_id = null ) {
2008-02-04 21:27:45 +01:00
$_post = get_post ( $post_id );
2008-02-13 07:39:45 +01:00
$open = ( 'open' == $_post -> ping_status );
2008-02-04 21:27:45 +01:00
return apply_filters ( 'pings_open' , $open , $post_id );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Display form token for unfiltered comments .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02: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 18:18:13 +01:00
*
2008-06-22 22:23:23 +02: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 18:18:13 +01:00
*
2008-09-24 22:02:41 +02:00
* Backported to 2.0 . 10.
*
2007-12-26 18:18:13 +01:00
* @ since 2.1 . 3
*/
2007-03-15 00:10:57 +01:00
function wp_comment_form_unfiltered_html_nonce () {
2012-09-04 18:29:28 +02:00
$post = get_post ();
$post_id = $post ? $post -> ID : 0 ;
2008-11-06 02:58:33 +01:00
2012-06-01 22:47:08 +02:00
if ( current_user_can ( 'unfiltered_html' ) ) {
wp_nonce_field ( 'unfiltered-html-comment_' . $post_id , '_wp_unfiltered_html_comment_disabled' , false );
echo " <script>(function() { if(window===window.parent) { document.getElementById('_wp_unfiltered_html_comment_disabled').name='_wp_unfiltered_html_comment';}})();</script> \n " ;
}
2007-03-15 00:10:57 +01:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Load the comment template specified in $file .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02: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 18:18:13 +01:00
*
* Uses the WordPress database object to query for the comments . The comments
* are passed through the 'comments_array' filter hook with the list of comments
* and the post ID respectively .
*
* The $file path is passed through a filter hook called , 'comments_template'
* which includes the TEMPLATEPATH and $file combined . Tries the $filtered path
2011-09-03 18:02:41 +02:00
* first and if it fails it will require the default comment template from the
2007-12-26 18:18:13 +01: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 .
*
2013-09-23 06:16:08 +02:00
* @ todo Document globals
2007-12-26 18:18:13 +01:00
* @ uses $withcomments Will not try to get the comments if the post has none .
*
2013-09-23 06:16:08 +02:00
* @ since 1.5 . 0
*
* @ param string $file Optional . The file to load . Default '/comments.php' .
* @ param bool $separate_comments Optional . Whether to separate the comments by comment type . Default false .
* @ return null Returns null if no comments appear .
2007-12-26 18:18:13 +01:00
*/
2008-10-07 01:16:26 +02:00
function comments_template ( $file = '/comments.php' , $separate_comments = false ) {
2008-10-24 09:27:19 +02:00
global $wp_query , $withcomments , $post , $wpdb , $id , $comment , $user_login , $user_ID , $user_identity , $overridden_cpage ;
2006-04-19 12:13:28 +02:00
2009-08-18 21:33:56 +02:00
if ( ! ( is_single () || is_page () || $withcomments ) || empty ( $post ) )
2006-06-22 22:52:12 +02:00
return ;
2008-10-07 01:16:26 +02:00
if ( empty ( $file ) )
$file = '/comments.php' ;
2010-01-26 23:49:05 +01:00
2006-08-30 23:46:31 +02:00
$req = get_option ( 'require_name_email' );
2009-07-20 03:11:14 +02:00
/**
2009-07-20 03:41:05 +02:00
* Comment author information fetched from the comment cookies .
2009-07-20 03:11:14 +02:00
*
* @ uses wp_get_current_commenter ()
*/
2006-06-22 22:52:12 +02:00
$commenter = wp_get_current_commenter ();
2009-07-20 03:11:14 +02:00
/**
2009-07-20 03:41:05 +02:00
* The name of the current comment author escaped for use in attributes .
2009-07-20 03:11:14 +02:00
*/
2009-07-20 03:41:05 +02:00
$comment_author = $commenter [ 'comment_author' ]; // Escaped by sanitize_comment_cookies()
2009-07-20 03:11:14 +02:00
/**
2009-07-20 03:41:05 +02:00
* The email address of the current comment author escaped for use in attributes .
2009-09-14 16:03:32 +02:00
*/
2009-07-20 03:41:05 +02:00
$comment_author_email = $commenter [ 'comment_author_email' ]; // Escaped by sanitize_comment_cookies()
2009-07-20 03:11:14 +02:00
/**
2009-07-20 03:41:05 +02:00
* The url of the current comment author escaped for use in attributes .
2009-09-14 16:03:32 +02:00
*/
2009-07-20 03:41:05 +02:00
$comment_author_url = esc_url ( $commenter [ 'comment_author_url' ]);
2006-04-19 12:13:28 +02:00
2007-12-26 18:18:13 +01:00
/** @todo Use API instead of SELECTs. */
2007-04-11 05:12:11 +02:00
if ( $user_ID ) {
2009-03-06 09:16:35 +01:00
$comments = $wpdb -> get_results ( $wpdb -> prepare ( " SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND (comment_approved = '1' OR ( user_id = %d AND comment_approved = '0' ) ) ORDER BY comment_date_gmt " , $post -> ID , $user_ID ));
2007-09-04 01:32:58 +02:00
} else if ( empty ( $comment_author ) ) {
2009-03-06 09:16:35 +01:00
$comments = get_comments ( array ( 'post_id' => $post -> ID , 'status' => 'approve' , 'order' => 'ASC' ) );
2006-04-19 12:13:28 +02:00
} else {
2009-05-06 22:24:57 +02:00
$comments = $wpdb -> get_results ( $wpdb -> prepare ( " SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND ( comment_approved = '1' OR ( comment_author = %s AND comment_author_email = %s AND comment_approved = '0' ) ) ORDER BY comment_date_gmt " , $post -> ID , wp_specialchars_decode ( $comment_author , ENT_QUOTES ), $comment_author_email ));
2006-04-19 12:13:28 +02:00
}
2008-10-07 01:16:26 +02:00
// keep $comments for legacy's sake
2013-09-23 23:21:09 +02:00
/**
* Filter the comments array .
*
* @ since 2.1 . 0
*
* @ param array $comments The array of comments supplied to the comments template .
* @ param int $post -> ID The post ID .
*/
2008-09-16 02:23:38 +02:00
$wp_query -> comments = apply_filters ( 'comments_array' , $comments , $post -> ID );
$comments = & $wp_query -> comments ;
2007-02-24 08:33:29 +01:00
$wp_query -> comment_count = count ( $wp_query -> comments );
2008-09-16 02:23:38 +02:00
update_comment_cache ( $wp_query -> comments );
2006-12-01 04:30:26 +01:00
2008-10-07 01:16:26 +02:00
if ( $separate_comments ) {
2012-10-04 20:21:47 +02:00
$wp_query -> comments_by_type = separate_comments ( $comments );
2008-10-07 01:16:26 +02:00
$comments_by_type = & $wp_query -> comments_by_type ;
}
2012-01-05 21:50:54 +01:00
$overridden_cpage = false ;
2008-12-12 21:08:49 +01:00
if ( '' == get_query_var ( 'cpage' ) && get_option ( 'page_comments' ) ) {
set_query_var ( 'cpage' , 'newest' == get_option ( 'default_comments_page' ) ? get_comment_pages_count () : 1 );
2012-01-05 21:50:54 +01:00
$overridden_cpage = true ;
2008-10-24 09:27:19 +02:00
}
2008-10-23 18:08:47 +02:00
2012-07-25 19:54:35 +02:00
if ( ! defined ( 'COMMENTS_TEMPLATE' ) )
2009-04-16 20:51:50 +02:00
define ( 'COMMENTS_TEMPLATE' , true );
2008-08-09 07:36:14 +02:00
2013-09-23 23:21:09 +02:00
$theme_template = STYLESHEETPATH . $file ;
/**
* Filter the path to the theme template file used for the comments template .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 1
2013-09-23 23:21:09 +02:00
*
* @ param string $theme_template The path to the theme template file .
*/
$include = apply_filters ( 'comments_template' , $theme_template );
2006-04-19 12:13:28 +02:00
if ( file_exists ( $include ) )
require ( $include );
2008-07-30 08:21:14 +02:00
elseif ( file_exists ( TEMPLATEPATH . $file ) )
2011-12-14 00:45:31 +01:00
require ( TEMPLATEPATH . $file );
2010-05-03 11:57:24 +02:00
else // Backward compat code will be removed in a future release
2010-07-16 11:40:09 +02:00
require ( ABSPATH . WPINC . '/theme-compat/comments.php' );
2006-04-19 12:13:28 +02:00
}
2007-12-26 18:18:13 +01:00
/**
2013-09-23 06:16:08 +02:00
* Display the JS popup script to show a comment .
2007-12-26 18:18:13 +01:00
*
* If the $file parameter is empty , then the home page is assumed . The defaults
* for the window are 400 px by 400 px .
*
* For the comment link popup to work , this function has to be called or the
* normal comment link will be assumed .
*
2013-09-23 06:16:08 +02:00
* @ global string $wpcommentspopupfile The URL to use for the popup window .
* @ global int $wpcommentsjavascript Whether to use JavaScript . Set when function is called .
*
2007-12-26 18:18:13 +01:00
* @ since 0.71
*
2013-09-23 06:16:08 +02:00
* @ param int $width Optional . The width of the popup window . Default 400.
* @ param int $height Optional . The height of the popup window . Default 400.
* @ param string $file Optional . Sets the location of the popup window .
2007-12-26 18:18:13 +01:00
*/
2013-09-23 06:16:08 +02:00
function comments_popup_script ( $width = 400 , $height = 400 , $file = '' ) {
2007-12-26 18:18:13 +01:00
global $wpcommentspopupfile , $wpcommentsjavascript ;
2006-04-19 12:13:28 +02:00
2007-12-26 18:18:13 +01:00
if ( empty ( $file )) {
$wpcommentspopupfile = '' ; // Use the index.
} else {
$wpcommentspopupfile = $file ;
}
2006-04-19 12:13:28 +02:00
2007-12-26 18:18:13 +01:00
$wpcommentsjavascript = 1 ;
$javascript = " <script type='text/javascript'> \n function wpopen (macagna) { \n window.open(macagna, '_blank', 'width= $width ,height= $height ,scrollbars=yes,status=yes'); \n } \n </script> \n " ;
echo $javascript ;
}
/**
2008-06-22 22:23:23 +02:00
* Displays the link to the comments popup window for the current post ID .
2007-12-26 18:18:13 +01:00
*
2008-06-22 22:23:23 +02:00
* Is not meant to be displayed on single posts and pages . Should be used on the
* lists of posts
2007-12-26 18:18:13 +01:00
*
2013-09-23 06:16:08 +02:00
* @ global string $wpcommentspopupfile The URL to use for the popup window .
* @ global int $wpcommentsjavascript Whether to use JavaScript . Set when function is called .
*
2007-12-26 18:18:13 +01:00
* @ since 0.71
2013-09-23 06:16:08 +02:00
*
* @ param string $zero Optional . The string to display when no comments . Default false .
* @ param string $one Optional . The string to display when only one comment is available . Default false .
* @ param string $more Optional . The string to display when there are more than one comment . Default false .
* @ param string $css_class Optional . The CSS class to use for comments . Default empty .
* @ param string $none Optional . The string to display when comments have been turned off . Default false .
2007-12-26 18:18:13 +01:00
* @ return null Returns null on single posts and pages .
*/
2009-04-16 20:51:50 +02:00
function comments_popup_link ( $zero = false , $one = false , $more = false , $css_class = '' , $none = false ) {
2010-08-28 13:57:28 +02:00
global $wpcommentspopupfile , $wpcommentsjavascript ;
$id = get_the_ID ();
2009-04-20 20:18:39 +02:00
2010-06-30 02:05:18 +02:00
if ( false === $zero ) $zero = __ ( 'No Comments' );
if ( false === $one ) $one = __ ( '1 Comment' );
if ( false === $more ) $more = __ ( '% Comments' );
if ( false === $none ) $none = __ ( 'Comments Off' );
2009-04-20 20:18:39 +02:00
2007-12-10 21:49:46 +01:00
$number = get_comments_number ( $id );
2006-04-19 12:13:28 +02:00
2009-04-17 09:02:55 +02:00
if ( 0 == $number && ! comments_open () && ! pings_open () ) {
2009-08-18 18:05:07 +02:00
echo '<span' . (( ! empty ( $css_class )) ? ' class="' . esc_attr ( $css_class ) . '"' : '' ) . '>' . $none . '</span>' ;
2006-04-19 12:13:28 +02:00
return ;
}
2008-09-03 21:54:14 +02:00
if ( post_password_required () ) {
2010-01-21 22:37:43 +01:00
echo __ ( 'Enter your password to view comments.' );
2008-09-03 21:54:14 +02:00
return ;
2006-04-19 12:13:28 +02:00
}
2007-12-10 21:49:46 +01:00
echo '<a href="' ;
if ( $wpcommentsjavascript ) {
if ( empty ( $wpcommentspopupfile ) )
2010-01-04 18:23:29 +01:00
$home = home_url ();
2006-04-19 12:13:28 +02:00
else
2006-08-30 23:46:31 +02:00
$home = get_option ( 'siteurl' );
2007-12-10 21:49:46 +01:00
echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id ;
echo '" onclick="wpopen(this.href); return false"' ;
2006-04-19 12:13:28 +02:00
} else { // if comments_popup_script() is not in the template, display simple comment link
if ( 0 == $number )
2007-12-10 21:49:46 +01:00
echo get_permalink () . '#respond' ;
2006-04-19 12:13:28 +02:00
else
2007-12-10 21:49:46 +01:00
comments_link ();
echo '"' ;
2006-04-19 12:13:28 +02:00
}
2007-12-10 21:49:46 +01:00
if ( ! empty ( $css_class ) ) {
echo ' class="' . $css_class . '" ' ;
2006-04-19 12:13:28 +02:00
}
2010-01-08 09:34:39 +01:00
$title = the_title_attribute ( array ( 'echo' => 0 ) );
2008-02-05 07:47:27 +01:00
2013-09-23 23:21:09 +02:00
$attributes = '' ;
/**
* Filter the comments popup link attributes for display .
*
* @ since 2.5 . 0
*
* @ param string $attributes The comments popup link attributes . Default empty .
*/
echo apply_filters ( 'comments_popup_link_attributes' , $attributes );
2007-12-10 21:49:46 +01:00
2009-08-18 18:05:07 +02:00
echo ' title="' . esc_attr ( sprintf ( __ ( 'Comment on %s' ), $title ) ) . '">' ;
2009-12-30 17:54:28 +01:00
comments_number ( $zero , $one , $more );
2007-12-10 21:49:46 +01:00
echo '</a>' ;
2006-04-19 12:13:28 +02:00
}
2008-09-24 22:02:41 +02:00
/**
* Retrieve HTML content for reply to comment link .
*
* @ since 2.7 . 0
*
2013-09-13 21:20:09 +02:00
* @ param array $args {
2013-09-23 06:16:08 +02:00
* Optional . Override default arguments .
*
* @ 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 text of the Reply link . Default 'Reply' .
* @ type string 'login_text' The text of the link to reply if logged out . Default 'Log in to Reply' .
* @ 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 21:20:09 +02:00
* }
2013-09-23 06:16:08 +02:00
* @ param int $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 . Default current post .
* @ return mixed Link to show comment form , if successful . False , if comments are closed .
2008-09-24 22:02:41 +02:00
*/
2008-10-29 23:56:48 +01:00
function get_comment_reply_link ( $args = array (), $comment = null , $post = null ) {
2008-09-11 21:25:50 +02:00
2013-09-13 21:20:09 +02:00
$defaults = array (
'add_below' => 'comment' ,
'respond_id' => 'respond' ,
'reply_text' => __ ( 'Reply' ),
'login_text' => __ ( 'Log in to Reply' ),
'depth' => 0 ,
'before' => '' ,
'after' => ''
);
2008-09-11 21:25:50 +02:00
$args = wp_parse_args ( $args , $defaults );
2008-09-23 23:11:27 +02:00
if ( 0 == $args [ 'depth' ] || $args [ 'max_depth' ] <= $args [ 'depth' ] )
2008-09-16 02:24:43 +02:00
return ;
2008-09-13 01:45:15 +02:00
2008-09-11 21:25:50 +02:00
extract ( $args , EXTR_SKIP );
$comment = get_comment ( $comment );
2010-02-25 08:56:25 +01:00
if ( empty ( $post ) )
$post = $comment -> comment_post_ID ;
2008-09-11 21:25:50 +02:00
$post = get_post ( $post );
2009-04-17 09:02:55 +02:00
if ( ! comments_open ( $post -> ID ) )
2008-09-11 21:25:50 +02:00
return false ;
$link = '' ;
2013-09-22 12:16:09 +02:00
if ( get_option ( 'comment_registration' ) && ! is_user_logged_in () )
2010-05-03 20:16:22 +02:00
$link = '<a rel="nofollow" class="comment-reply-login" href="' . esc_url ( wp_login_url ( get_permalink () ) ) . '">' . $login_text . '</a>' ;
2008-12-09 19:03:31 +01:00
else
2010-11-07 02:06:37 +01:00
$link = " <a class='comment-reply-link' href=' " . esc_url ( add_query_arg ( 'replytocom' , $comment -> comment_ID ) ) . " # " . $respond_id . " ' onclick='return addComment.moveForm( \" $add_below - $comment->comment_ID\ " , \ " $comment->comment_ID\ " , \ " $respond_id\ " , \ " $post->ID\ " ) ' > $reply_text </ a > " ;
2013-09-13 21:20:09 +02:00
/**
* Filter the comment reply link .
*
* @ since 2.7 . 0
*
* @ param string $before Text or HTML displayed before the reply link .
* @ param string $link The HTML markup for the comment reply link .
* @ param string $after Text or HTML displayed after the reply link .
* @ param array $args An array of arguments overriding the defaults .
* @ param object $comment The object of the comment being replied .
* @ param WP_Post $post The WP_Post object .
*/
return apply_filters ( 'comment_reply_link' , $before . $link . $after , $args , $comment , $post );
2008-09-11 21:25:50 +02:00
}
2008-09-24 22:02:41 +02:00
/**
2008-10-29 23:56:48 +01:00
* Displays the HTML content for reply to comment link .
2008-09-24 22:02:41 +02:00
*
* @ since 2.7 . 0
2008-10-29 23:56:48 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param array $args Optional . Override default options , @ see get_comment_reply_link ()
* @ param int $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 . Default current post .
* @ return mixed Link to show comment form , if successful . False , if comments are closed .
2008-10-29 23:56:48 +01:00
*/
function comment_reply_link ( $args = array (), $comment = null , $post = null ) {
echo get_comment_reply_link ( $args , $comment , $post );
}
2008-12-10 22:06:13 +01:00
2008-12-10 12:49:37 +01:00
/**
* Retrieve HTML content for reply to post link .
*
* @ since 2.7 . 0
*
2013-09-23 06:16:08 +02:00
* @ param array $args {
* Optional . Override default arguments .
*
* @ 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 is 'respond' .
* @ type string 'reply_text' The text of the Reply link . Default is 'Leave a Comment' .
* @ type string 'login_text' The text of the link to reply if logged out . Default is 'Log in to leave a Comment' .
* @ 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 .
* }
* @ param int | WP_Post $post Optional . Post ID or WP_Post object the comment is going to be displayed on . Default current post .
2008-12-10 12:49:37 +01:00
* @ return string | bool | null Link to show comment form , if successful . False , if comments are closed .
*/
2008-12-10 22:06:13 +01:00
function get_post_reply_link ( $args = array (), $post = null ) {
2013-09-22 12:16:09 +02:00
$defaults = array (
'add_below' => 'post' ,
'respond_id' => 'respond' ,
'reply_text' => __ ( 'Leave a Comment' ),
'login_text' => __ ( 'Log in to leave a Comment' ),
'before' => '' ,
'after' => '' ,
);
2008-12-10 12:49:37 +01:00
$args = wp_parse_args ( $args , $defaults );
extract ( $args , EXTR_SKIP );
$post = get_post ( $post );
2009-03-18 03:43:45 +01:00
2008-12-10 22:06:13 +01:00
if ( ! comments_open ( $post -> ID ) )
2008-12-10 12:49:37 +01:00
return false ;
2013-09-23 23:21:09 +02:00
if ( get_option ( 'comment_registration' ) && ! is_user_logged_in () )
2009-04-14 20:31:49 +02:00
$link = '<a rel="nofollow" href="' . wp_login_url ( get_permalink () ) . '">' . $login_text . '</a>' ;
2013-09-23 23:21:09 +02:00
else
2009-01-10 11:21:28 +01:00
$link = " <a rel='nofollow' class='comment-reply-link' href=' " . get_permalink ( $post -> ID ) . " # $respond_id ' onclick='return addComment.moveForm( \" $add_below - $post->ID\ " , \ " 0 \" , \" $respond_id\ " , \ " $post->ID\ " ) ' > $reply_text </ a > " ;
2013-09-23 23:21:09 +02:00
$formatted_link = $before . $link . $after ;
/**
* Filter the formatted post comments link HTML .
*
* @ since 2.7 . 0
*
* @ param string $formatted The HTML - formatted post comments link .
* @ param int | WP_Post $post The post ID or WP_Post object .
*/
return apply_filters ( 'post_comments_link' , $formatted_link , $post );
2008-12-10 12:49:37 +01:00
}
/**
* Displays the HTML content for reply to post link .
2013-09-22 12:16:09 +02:00
*
2008-12-10 12:49:37 +01:00
* @ since 2.7 . 0
*
2013-09-23 06:16:08 +02:00
* @ param array $args Optional . Override default options , @ see get_post_reply_link ()
* @ param int | WP_Post $post Optional . Post ID or WP_Post object the comment is going to be displayed on . Default current post .
2008-12-10 12:49:37 +01:00
* @ return string | bool | null Link to show comment form , if successful . False , if comments are closed .
*/
2008-12-10 22:06:13 +01:00
function post_reply_link ( $args = array (), $post = null ) {
2008-12-10 22:13:32 +01:00
echo get_post_reply_link ( $args , $post );
2008-12-10 12:49:37 +01:00
}
2008-10-29 23:56:48 +01:00
/**
* Retrieve HTML content for cancel comment reply link .
2008-09-24 22:02:41 +02:00
*
2008-10-29 23:56:48 +01:00
* @ since 2.7 . 0
2008-12-09 19:03:31 +01:00
*
2013-09-23 06:16:08 +02:00
* @ param string $text Optional . Text to display for cancel reply link . Default empty .
2008-09-24 22:02:41 +02:00
*/
2013-09-23 06:16:08 +02:00
function get_cancel_comment_reply_link ( $text = '' ) {
2008-09-11 21:25:50 +02:00
if ( empty ( $text ) )
$text = __ ( 'Click here to cancel reply.' );
2008-12-09 19:03:31 +01:00
2008-10-09 09:37:05 +02:00
$style = isset ( $_GET [ 'replytocom' ]) ? '' : ' style="display:none;"' ;
2009-05-18 17:11:07 +02:00
$link = esc_html ( remove_query_arg ( 'replytocom' ) ) . '#respond' ;
2013-09-23 23:21:09 +02:00
$formatted_link = '<a rel="nofollow" id="cancel-comment-reply-link" href="' . $link . '"' . $style . '>' . $text . '</a>' ;
/**
* Filter the cancel comment reply link HTML .
*
* @ since 2.7 . 0
*
* @ param string $formatted_link The HTML - formatted cancel comment reply link .
* @ param string $link The cancel comment reply link URL .
* @ param string $text The cancel comment reply link text .
*/
return apply_filters ( 'cancel_comment_reply_link' , $formatted_link , $link , $text );
2008-10-29 23:56:48 +01:00
}
2008-10-09 09:37:05 +02:00
2008-10-29 23:56:48 +01:00
/**
* Display HTML content for cancel comment reply link .
*
* @ since 2.7 . 0
*
2013-09-23 06:16:08 +02:00
* @ param string $text Optional . Text to display for cancel reply link . Default empty .
2008-10-29 23:56:48 +01:00
*/
2013-09-23 06:16:08 +02:00
function cancel_comment_reply_link ( $text = '' ) {
2008-10-29 23:56:48 +01:00
echo get_cancel_comment_reply_link ( $text );
2008-10-09 09:37:05 +02:00
}
/**
2010-04-11 10:56:18 +02:00
* Retrieve hidden input HTML for replying to comments .
2008-10-09 09:37:05 +02:00
*
2010-04-11 17:23:20 +02:00
* @ since 3.0 . 0
*
2013-09-23 06:16:08 +02:00
* @ param int $id Optional . Post ID . Default current post ID .
2010-04-11 10:56:18 +02:00
* @ return string Hidden input HTML for replying to comments
2008-10-09 09:37:05 +02:00
*/
2011-05-05 21:33:47 +02:00
function get_comment_id_fields ( $id = 0 ) {
if ( empty ( $id ) )
$id = get_the_ID ();
2008-10-14 21:06:18 +02:00
2008-10-09 09:37:05 +02:00
$replytoid = isset ( $_GET [ 'replytocom' ]) ? ( int ) $_GET [ 'replytocom' ] : 0 ;
2010-04-11 10:56:18 +02:00
$result = " <input type='hidden' name='comment_post_ID' value=' $id ' id='comment_post_ID' /> \n " ;
$result .= " <input type='hidden' name='comment_parent' id='comment_parent' value=' $replytoid ' /> \n " ;
2013-09-23 23:21:09 +02:00
/**
* Filter the returned comment id fields .
*
* @ since 3.0 . 0
*
* @ param string $result The HTML - formatted hidden id field comment elements .
* @ param int $id The post ID .
* @ param int $replytoid The id of the comment being replied to .
*/
return apply_filters ( 'comment_id_fields' , $result , $id , $replytoid );
2010-04-11 10:56:18 +02:00
}
/**
* Output hidden input HTML for replying to comments .
*
* @ since 2.7 . 0
2013-09-23 06:16:08 +02:00
*
* @ param int $id Optional . Post ID . Default current post ID .
2010-04-11 10:56:18 +02:00
*/
2011-05-05 21:33:47 +02:00
function comment_id_fields ( $id = 0 ) {
echo get_comment_id_fields ( $id );
2008-10-09 09:37:05 +02:00
}
/**
2013-09-23 06:16:08 +02:00
* Display text based on comment reply status .
*
* Only affects users with Javascript disabled .
2008-10-09 09:37:05 +02:00
*
* @ since 2.7 . 0
*
2013-09-23 06:16:08 +02:00
* @ param string $noreplytext Optional . Text to display when not replying to a comment . Default false .
* @ param string $replytext Optional . Text to display when replying to a comment .
* Default false . Accepts " %s " for the author of the comment being replied to .
* @ param string $linktoparent Optional . Boolean to control making the author ' s name a link to their comment . Default true .
2008-10-09 09:37:05 +02:00
*/
2012-01-05 21:50:54 +01:00
function comment_form_title ( $noreplytext = false , $replytext = false , $linktoparent = true ) {
2008-10-09 09:37:05 +02:00
global $comment ;
2009-04-20 20:18:39 +02:00
2009-04-16 20:51:50 +02:00
if ( false === $noreplytext ) $noreplytext = __ ( 'Leave a Reply' );
if ( false === $replytext ) $replytext = __ ( 'Leave a Reply to %s' );
2008-10-09 09:37:05 +02:00
$replytoid = isset ( $_GET [ 'replytocom' ]) ? ( int ) $_GET [ 'replytocom' ] : 0 ;
if ( 0 == $replytoid )
echo $noreplytext ;
else {
$comment = get_comment ( $replytoid );
$author = ( $linktoparent ) ? '<a href="#comment-' . get_comment_ID () . '">' . get_comment_author () . '</a>' : get_comment_author ();
printf ( $replytext , $author );
}
2008-09-11 21:25:50 +02:00
}
2008-09-24 22:02:41 +02:00
/**
* HTML comment list class .
*
* @ package WordPress
* @ uses Walker
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
*/
2008-09-11 21:25:50 +02:00
class Walker_Comment extends Walker {
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* What the class handles .
*
2008-09-24 22:02:41 +02:00
* @ see Walker :: $tree_type
2013-09-24 01:29:11 +02:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
* @ var string
*/
2008-09-11 21:25:50 +02:00
var $tree_type = 'comment' ;
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* DB fields to use .
*
2008-09-24 22:02:41 +02:00
* @ see Walker :: $db_fields
2013-09-24 01:29:11 +02:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
* @ var array
*/
2008-09-11 21:25:50 +02:00
var $db_fields = array ( 'parent' => 'comment_parent' , 'id' => 'comment_ID' );
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* Start the list before the elements are added .
*
2008-09-24 22:02:41 +02:00
* @ see Walker :: start_lvl ()
2013-09-24 01:29:11 +02:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
*
* @ param string $output Passed by reference . Used to append additional content .
* @ param int $depth Depth of comment .
* @ param array $args Uses 'style' argument for type of HTML list .
*/
2012-01-05 00:03:46 +01:00
function start_lvl ( & $output , $depth = 0 , $args = array () ) {
2008-09-24 06:45:50 +02:00
$GLOBALS [ 'comment_depth' ] = $depth + 1 ;
2008-09-12 21:18:39 +02:00
switch ( $args [ 'style' ] ) {
case 'div' :
break ;
case 'ol' :
2013-03-14 05:26:04 +01:00
echo '<ol class="children">' . " \n " ;
2008-09-12 21:18:39 +02:00
break ;
default :
case 'ul' :
2013-03-14 05:26:04 +01:00
echo '<ul class="children">' . " \n " ;
2008-09-12 21:18:39 +02:00
break ;
}
2008-09-11 21:25:50 +02:00
}
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* End the list of items after the elements are added .
*
2008-09-24 22:02:41 +02:00
* @ see Walker :: end_lvl ()
2013-09-24 01:29:11 +02:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
*
* @ param string $output Passed by reference . Used to append additional content .
2013-09-24 01:29:11 +02:00
* @ param int $depth Depth of comment .
* @ param array $args Will only append content if style argument value is 'ol' or 'ul' .
2008-09-24 22:02:41 +02:00
*/
2012-01-05 00:03:46 +01:00
function end_lvl ( & $output , $depth = 0 , $args = array () ) {
2008-09-24 06:45:50 +02:00
$GLOBALS [ 'comment_depth' ] = $depth + 1 ;
2008-09-12 21:18:39 +02:00
switch ( $args [ 'style' ] ) {
case 'div' :
break ;
case 'ol' :
2013-03-14 05:26:04 +01:00
echo " </ol><!-- .children --> \n " ;
2008-09-12 21:18:39 +02:00
break ;
default :
case 'ul' :
2013-03-14 05:26:04 +01:00
echo " </ul><!-- .children --> \n " ;
2008-09-12 21:18:39 +02:00
break ;
}
2008-09-11 21:25:50 +02:00
}
2010-04-02 06:05:01 +02:00
/**
2013-09-24 01:29:11 +02:00
* Traverse elements to create list from elements .
*
2010-04-02 07:33:18 +02:00
* This function is designed to enhance Walker :: display_element () to
* display children of higher nesting levels than selected inline on
* the highest depth level displayed . This prevents them being orphaned
* at the end of the comment list .
2010-05-03 22:26:11 +02:00
*
2010-04-02 06:05:01 +02:00
* Example : max_depth = 2 , with 5 levels of nested content .
* 1
* 1.1
* 1.1 . 1
* 1.1 . 1.1
* 1.1 . 1.1 . 1
* 1.1 . 2
* 1.1 . 2.1
* 2
* 2.2
*
2013-09-24 01:29:11 +02:00
* @ see Walker :: display_element ()
*
* @ since 2.7 . 0
*
* @ param object $element Data object .
* @ param array $children_elements List of elements to continue traversing .
* @ param int $max_depth Max depth to traverse .
* @ param int $depth Depth of current element .
* @ param array $args An array of arguments . @ see wp_list_comments ()
* @ param string $output Passed by reference . Used to append additional content .
* @ return null Null on failure with no changes to parameters .
2010-04-02 06:05:01 +02:00
*/
2013-04-29 15:26:31 +02:00
function display_element ( $element , & $children_elements , $max_depth , $depth , $args , & $output ) {
2010-04-02 06:05:01 +02:00
if ( ! $element )
return ;
$id_field = $this -> db_fields [ 'id' ];
$id = $element -> $id_field ;
2010-04-02 07:33:18 +02:00
parent :: display_element ( $element , $children_elements , $max_depth , $depth , $args , $output );
2010-04-02 07:13:57 +02:00
2010-04-02 07:33:18 +02:00
// If we're at the max depth, and the current element still has children, loop over those and display them at this level
// This is to prevent them being orphaned to the end of the list.
2010-04-02 07:13:57 +02:00
if ( $max_depth <= $depth + 1 && isset ( $children_elements [ $id ]) ) {
2010-04-02 07:33:18 +02:00
foreach ( $children_elements [ $id ] as $child )
2010-04-02 07:13:57 +02:00
$this -> display_element ( $child , $children_elements , $max_depth , $depth , $args , $output );
2010-04-02 07:33:18 +02:00
2010-04-02 07:13:57 +02:00
unset ( $children_elements [ $id ] );
}
2010-04-02 06:05:01 +02:00
}
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* Start the element output .
*
2008-09-24 22:02:41 +02:00
* @ see Walker :: start_el ()
2013-09-24 01:29:11 +02:00
*
2010-12-20 10:25:21 +01:00
* @ since 2.7 . 0
2008-09-24 22:02:41 +02:00
*
2013-09-24 01:29:11 +02:00
* @ param string $output Passed by reference . Used to append additional content .
2008-09-24 22:02:41 +02:00
* @ param object $comment Comment data object .
2013-09-24 01:29:11 +02:00
* @ param int $depth Depth of comment in reference to parents .
* @ param array $args An array of arguments . @ see wp_list_comments ()
2008-09-24 22:02:41 +02:00
*/
2013-05-28 05:29:15 +02:00
function start_el ( & $output , $comment , $depth = 0 , $args = array (), $id = 0 ) {
2008-09-11 21:25:50 +02:00
$depth ++ ;
2008-09-24 06:45:50 +02:00
$GLOBALS [ 'comment_depth' ] = $depth ;
2012-07-25 18:27:48 +02:00
$GLOBALS [ 'comment' ] = $comment ;
2008-09-11 21:25:50 +02:00
2013-03-14 05:26:04 +01:00
if ( ! empty ( $args [ 'callback' ] ) ) {
call_user_func ( $args [ 'callback' ], $comment , $args , $depth );
2008-09-11 21:25:50 +02:00
return ;
}
2013-03-14 05:26:04 +01:00
if ( ( 'pingback' == $comment -> comment_type || 'trackback' == $comment -> comment_type ) && $args [ 'short_ping' ] ) {
$this -> ping ( $comment , $depth , $args );
} elseif ( 'html5' === $args [ 'format' ] ) {
$this -> html5_comment ( $comment , $depth , $args );
} else {
$this -> comment ( $comment , $depth , $args );
}
}
2008-09-11 21:25:50 +02:00
2013-03-14 05:26:04 +01:00
/**
2013-09-24 01:29:11 +02:00
* Ends the element output , if needed .
*
2013-03-14 05:26:04 +01:00
* @ see Walker :: end_el ()
2013-09-24 01:29:11 +02:00
*
2013-03-14 05:26:04 +01:00
* @ since 2.7 . 0
*
2013-09-24 01:29:11 +02:00
* @ param string $output Passed by reference . Used to append additional content .
* @ param object $comment The comment object . Default current comment .
* @ param int $depth Depth of comment .
* @ param array $args An array of arguments . @ see wp_list_comments ()
2013-03-14 05:26:04 +01:00
*/
function end_el ( & $output , $comment , $depth = 0 , $args = array () ) {
if ( ! empty ( $args [ 'end-callback' ] ) ) {
call_user_func ( $args [ 'end-callback' ], $comment , $args , $depth );
return ;
}
if ( 'div' == $args [ 'style' ] )
echo " </div><!-- #comment-## --> \n " ;
else
echo " </li><!-- #comment-## --> \n " ;
}
/**
2013-09-24 01:29:11 +02:00
* Output a pingback comment .
*
2013-03-14 05:26:04 +01:00
* @ access protected
2013-09-24 01:29:11 +02:00
* @ since 3.6 . 0
2013-03-14 05:26:04 +01:00
*
2013-09-24 01:29:11 +02:00
* @ param object $comment The comment object .
* @ param int $depth Depth of comment .
* @ param array $args An array of arguments . @ see wp_list_comments ()
2013-03-14 05:26:04 +01:00
*/
protected function ping ( $comment , $depth , $args ) {
$tag = ( 'div' == $args [ 'style' ] ) ? 'div' : 'li' ;
?>
<< ? php echo $tag ; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
< div class = " comment-body " >
< ? php _e ( 'Pingback:' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
</ div >
< ? php
}
/**
2013-09-24 01:29:11 +02:00
* Output a single comment .
*
2013-03-14 05:26:04 +01:00
* @ access protected
2013-09-24 01:29:11 +02:00
* @ since 3.6 . 0
2013-03-14 05:26:04 +01:00
*
* @ param object $comment Comment to display .
2013-09-24 01:29:11 +02:00
* @ param int $depth Depth of comment .
* @ param array $args An array of arguments . @ see wp_list_comments ()
2013-03-14 05:26:04 +01:00
*/
protected function comment ( $comment , $depth , $args ) {
2008-09-24 06:45:50 +02:00
if ( 'div' == $args [ 'style' ] ) {
2008-09-11 21:25:50 +02:00
$tag = 'div' ;
2008-09-24 06:45:50 +02:00
$add_below = 'comment' ;
} else {
2008-09-11 21:25:50 +02:00
$tag = 'li' ;
2008-09-24 06:45:50 +02:00
$add_below = 'div-comment' ;
}
2008-09-11 21:25:50 +02:00
?>
2013-03-14 05:26:04 +01:00
<< ? php echo $tag ; ?> <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?> id="comment-<?php comment_ID(); ?>">
2009-10-15 23:47:35 +02:00
< ? php if ( 'div' != $args [ 'style' ] ) : ?>
2013-03-14 05:26:04 +01:00
< div id = " div-comment-<?php comment_ID(); ?> " class = " comment-body " >
2008-09-11 21:25:50 +02:00
< ? php endif ; ?>
< div class = " comment-author vcard " >
2013-03-14 05:26:04 +01:00
< ? php if ( 0 != $args [ 'avatar_size' ] ) echo get_avatar ( $comment , $args [ 'avatar_size' ] ); ?>
< ? php printf ( __ ( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link () ); ?>
2008-09-11 21:25:50 +02:00
</ div >
2013-03-14 05:26:04 +01:00
< ? php if ( '0' == $comment -> comment_approved ) : ?>
< em class = " comment-awaiting-moderation " >< ? php _e ( 'Your comment is awaiting moderation.' ) ?> </em>
2008-09-11 21:25:50 +02:00
< br />
2013-03-14 05:26:04 +01:00
< ? php endif ; ?>
2008-09-11 21:25:50 +02:00
2013-03-14 05:26:04 +01:00
< div class = " comment-meta commentmetadata " >< a href = " <?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?> " >
2010-01-21 22:37:43 +01:00
< ? php
/* translators: 1: date, 2: time */
2013-03-14 05:26:04 +01:00
printf ( __ ( '%1$s at %2$s' ), get_comment_date (), get_comment_time () ); ?> </a><?php edit_comment_link( __( '(Edit)' ), ' ', '' );
2010-01-21 22:37:43 +01:00
?>
</ div >
2008-09-11 21:25:50 +02:00
2013-09-21 20:18:09 +02:00
< ? php comment_text ( get_comment_id (), array_merge ( $args , array ( 'add_below' => $add_below , 'depth' => $depth , 'max_depth' => $args [ 'max_depth' ] ) ) ); ?>
2008-09-11 21:25:50 +02:00
2008-10-09 09:37:05 +02:00
< div class = " reply " >
2013-03-14 05:26:04 +01:00
< ? php comment_reply_link ( array_merge ( $args , array ( 'add_below' => $add_below , 'depth' => $depth , 'max_depth' => $args [ 'max_depth' ] ) ) ); ?>
2008-10-28 17:17:48 +01:00
</ div >
2009-10-15 23:47:35 +02:00
< ? php if ( 'div' != $args [ 'style' ] ) : ?>
2008-09-11 21:25:50 +02:00
</ div >
< ? php endif ; ?>
< ? php
}
2008-09-24 22:02:41 +02:00
/**
2013-09-24 01:29:11 +02:00
* Output a comment in the HTML5 format .
*
2013-03-14 05:26:04 +01:00
* @ access protected
2013-09-24 01:29:11 +02:00
* @ since 3.6 . 0
2008-09-24 22:02:41 +02:00
*
2013-03-14 05:26:04 +01:00
* @ param object $comment Comment to display .
2013-09-24 01:29:11 +02:00
* @ param int $depth Depth of comment .
* @ param array $args An array of arguments . @ see wp_list_comments ()
2008-09-24 22:02:41 +02:00
*/
2013-03-14 05:26:04 +01:00
protected function html5_comment ( $comment , $depth , $args ) {
$tag = ( 'div' === $args [ 'style' ] ) ? 'div' : 'li' ;
?>
<< ? php echo $tag ; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?>>
< article id = " div-comment-<?php comment_ID(); ?> " class = " comment-body " >
< footer class = " comment-meta " >
< div class = " comment-author vcard " >
< ? php if ( 0 != $args [ 'avatar_size' ] ) echo get_avatar ( $comment , $args [ 'avatar_size' ] ); ?>
2013-07-01 20:26:16 +02:00
< ? php printf ( __ ( '%s <span class="says">says:</span>' ), sprintf ( '<b class="fn">%s</b>' , get_comment_author_link () ) ); ?>
2013-03-14 05:26:04 +01:00
</ div ><!-- . comment - author -->
< div class = " comment-metadata " >
< a href = " <?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?> " >
< time datetime = " <?php comment_time( 'c' ); ?> " >
< ? php printf ( _x ( '%1$s at %2$s' , '1: date, 2: time' ), get_comment_date (), get_comment_time () ); ?>
</ time >
</ a >
< ? php edit_comment_link ( __ ( 'Edit' ), '<span class="edit-link">' , '</span>' ); ?>
</ div ><!-- . comment - metadata -->
< ? php if ( '0' == $comment -> comment_approved ) : ?>
< p class = " comment-awaiting-moderation " >< ? php _e ( 'Your comment is awaiting moderation.' ); ?> </p>
< ? php endif ; ?>
</ footer ><!-- . comment - meta -->
< div class = " comment-content " >
< ? php comment_text (); ?>
</ div ><!-- . comment - content -->
< div class = " reply " >
< ? php comment_reply_link ( array_merge ( $args , array ( 'add_below' => 'div-comment' , 'depth' => $depth , 'max_depth' => $args [ 'max_depth' ] ) ) ); ?>
</ div ><!-- . reply -->
</ article ><!-- . comment - body -->
< ? php
2008-09-11 21:25:50 +02:00
}
}
/**
2013-09-23 06:16:08 +02:00
* List comments .
2008-09-11 21:25:50 +02:00
*
2013-09-23 06:16:08 +02:00
* Used in the comments . php template to list comments for a particular post .
2008-09-11 21:25:50 +02:00
*
2008-09-24 22:02:41 +02:00
* @ since 2.7 . 0
2008-09-11 21:25:50 +02:00
*
2013-09-23 06:16:08 +02:00
* @ param string | array $args {
* Optional . Formatting options .
*
* @ type string 'walker' The Walker class used to list comments . Default null .
* @ type int 'max_depth' The maximum comments depth . Default empty .
* @ type string 'style' The style of list ordering . Default 'ul' . Accepts 'ul' , 'ol' .
* @ type string 'callback' Callback function to use . Default null .
* @ type string 'end-callback' Callback function to use at the end . Default null .
* @ type string 'type' Type of comments to list .
* Default 'all' . Accepts 'all' , 'comment' , 'pingback' , 'trackback' , 'pings' .
* @ 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.
* @ type string 'reverse_top_level' Ordering of the listed comments . Default null . Accepts 'desc' , 'asc' .
* @ type bool 'reverse_children' Whether to reverse child comments in the list . Default null .
* @ type string 'format' How to format the comments list .
* Default 'html5' if the theme supports it . Accepts 'html5' , 'xhtml' .
* @ type bool 'short_ping' Whether to output short pings . Default false .
* }
* @ param array $comments Optional . Array of comment objects . @ see WP_Query -> comments
2008-09-11 21:25:50 +02:00
*/
2013-09-23 06:16:08 +02:00
function wp_list_comments ( $args = array (), $comments = null ) {
2008-11-20 07:41:55 +01:00
global $wp_query , $comment_alt , $comment_depth , $comment_thread_alt , $overridden_cpage , $in_comment_loop ;
$in_comment_loop = true ;
2008-09-24 06:45:50 +02:00
$comment_alt = $comment_thread_alt = 0 ;
$comment_depth = 1 ;
2008-09-16 02:23:38 +02:00
2013-03-14 05:26:04 +01: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 17:31:34 +02:00
'format' => current_theme_supports ( 'html5' , 'comment-list' ) ? 'html5' : 'xhtml' ,
2013-03-14 05:26:04 +01:00
'short_ping' => false ,
);
2008-09-11 21:25:50 +02:00
$r = wp_parse_args ( $args , $defaults );
2008-11-13 21:36:36 +01:00
// Figure out what comments we'll be looping through ($_comments)
if ( null !== $comments ) {
$comments = ( array ) $comments ;
if ( empty ( $comments ) )
return ;
if ( 'all' != $r [ 'type' ] ) {
2012-10-04 20:26:25 +02:00
$comments_by_type = separate_comments ( $comments );
2008-11-13 21:36:36 +01:00
if ( empty ( $comments_by_type [ $r [ 'type' ]]) )
return ;
$_comments = $comments_by_type [ $r [ 'type' ]];
} else {
$_comments = $comments ;
}
} else {
if ( empty ( $wp_query -> comments ) )
return ;
if ( 'all' != $r [ 'type' ] ) {
if ( empty ( $wp_query -> comments_by_type ) )
2012-10-04 20:26:25 +02:00
$wp_query -> comments_by_type = separate_comments ( $wp_query -> comments );
2008-11-13 21:36:36 +01:00
if ( empty ( $wp_query -> comments_by_type [ $r [ 'type' ]]) )
return ;
$_comments = $wp_query -> comments_by_type [ $r [ 'type' ]];
} else {
$_comments = $wp_query -> comments ;
}
}
2008-09-23 23:11:27 +02:00
if ( '' === $r [ 'per_page' ] && get_option ( 'page_comments' ) )
$r [ 'per_page' ] = get_query_var ( 'comments_per_page' );
if ( empty ( $r [ 'per_page' ]) ) {
2008-09-24 07:20:17 +02:00
$r [ 'per_page' ] = 0 ;
2008-09-23 23:11:27 +02:00
$r [ 'page' ] = 0 ;
}
2008-10-31 03:58:22 +01:00
if ( '' === $r [ 'max_depth' ] ) {
2008-09-23 23:11:27 +02:00
if ( get_option ( 'thread_comments' ) )
2008-10-31 03:58:22 +01:00
$r [ 'max_depth' ] = get_option ( 'thread_comments_depth' );
2008-09-23 23:11:27 +02:00
else
2008-10-31 03:58:22 +01:00
$r [ 'max_depth' ] = - 1 ;
2008-09-23 23:11:27 +02:00
}
2008-10-23 18:08:47 +02:00
if ( '' === $r [ 'page' ] ) {
2008-11-13 21:36:36 +01:00
if ( empty ( $overridden_cpage ) ) {
2008-10-23 18:08:47 +02:00
$r [ 'page' ] = get_query_var ( 'cpage' );
} else {
2010-03-19 22:15:00 +01:00
$threaded = ( - 1 != $r [ 'max_depth' ] );
2008-11-13 21:36:36 +01:00
$r [ 'page' ] = ( 'newest' == get_option ( 'default_comments_page' ) ) ? get_comment_pages_count ( $_comments , $r [ 'per_page' ], $threaded ) : 1 ;
set_query_var ( 'cpage' , $r [ 'page' ] );
2008-10-23 18:08:47 +02:00
}
}
// Validation check
$r [ 'page' ] = intval ( $r [ 'page' ]);
if ( 0 == $r [ 'page' ] && 0 != $r [ 'per_page' ] )
$r [ 'page' ] = 1 ;
2008-10-28 17:41:47 +01:00
if ( null === $r [ 'reverse_top_level' ] )
2010-03-19 22:15:00 +01:00
$r [ 'reverse_top_level' ] = ( 'desc' == get_option ( 'comment_order' ) );
2008-10-23 18:08:47 +02:00
2008-09-11 21:25:50 +02:00
extract ( $r , EXTR_SKIP );
if ( empty ( $walker ) )
2008-11-13 21:36:36 +01:00
$walker = new Walker_Comment ;
2008-09-11 21:25:50 +02:00
2008-11-13 21:36:36 +01:00
$walker -> paged_walk ( $_comments , $max_depth , $page , $per_page , $r );
$wp_query -> max_num_comment_pages = $walker -> max_pages ;
2008-11-20 07:41:55 +01:00
$in_comment_loop = false ;
2008-09-11 21:25:50 +02:00
}
2010-01-23 19:06:37 +01:00
/**
2013-09-23 06:16:08 +02:00
* Output a complete commenting form for use within a template .
*
2010-01-23 19:06:37 +01:00
* Most strings and form fields may be controlled through the $args array passed
2010-05-10 10:47:13 +02:00
* into the function , while you may also choose to use the comment_form_default_fields
2010-01-23 19:06:37 +01: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
2010-05-10 10:47:13 +02:00
* a filter of the form comment_form_field_ $name where $name is the key used
2010-01-23 19:06:37 +01:00
* in the array of fields .
*
2010-03-26 20:13:36 +01:00
* @ since 3.0 . 0
2013-09-23 06:16:08 +02:00
*
2013-09-23 19:16:08 +02:00
* @ param array $args {
* Optional . Default arguments and form fields to override .
*
* @ type array 'fields' {
* Default comment fields , filterable by default via the 'comment_form_default_fields' hook .
*
* @ type string 'author' The comment author field HTML .
* @ type string 'email' The comment author email field HTML .
* @ type string 'url' The comment author URL field HTML .
* }
* @ 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 .
* @ type string 'logged_in_as' HTML element for a 'logged in as <user>' message .
* @ type string 'comment_notes_before' HTML element for a message displayed before the comment form .
2013-09-23 19:30:08 +02:00
* Default 'Your email address will not be published.' .
2013-09-23 19:16:08 +02:00
* @ type string 'comment_notes_after' HTML element for a message displayed after the comment form .
2013-09-23 19:30:08 +02:00
* Default 'You may use these HTML tags and attributes ...' .
* @ type string 'id_form' The comment form element id attribute . Default 'commentform' .
* @ type string 'id_submit' The comment submit element id attribute . Default 'submit' .
2013-09-23 19:16:08 +02: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 .
* @ 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' .
* @ type string 'format' The comment form format . Default 'xhtml' . Accepts 'xhtml' , 'html5' .
* }
2013-09-23 06:16:08 +02:00
* @ param int | WP_Post $post_id Optional . Post ID or WP_Post object to generate the form for . Default current post .
2010-01-23 19:06:37 +01:00
*/
function comment_form ( $args = array (), $post_id = null ) {
if ( null === $post_id )
2013-05-23 20:40:16 +02:00
$post_id = get_the_ID ();
2010-01-23 19:06:37 +01:00
else
$id = $post_id ;
2010-01-26 23:49:05 +01:00
2010-01-23 19:06:37 +01:00
$commenter = wp_get_current_commenter ();
2011-11-14 22:35:44 +01:00
$user = wp_get_current_user ();
2012-04-06 21:18:45 +02:00
$user_identity = $user -> exists () ? $user -> display_name : '' ;
2010-01-26 23:49:05 +01:00
2013-08-28 07:28:09 +02:00
$args = wp_parse_args ( $args );
2013-06-06 17:31:34 +02:00
if ( ! isset ( $args [ 'format' ] ) )
$args [ 'format' ] = current_theme_supports ( 'html5' , 'comment-form' ) ? 'html5' : 'xhtml' ;
2013-03-13 21:31:43 +01:00
$req = get_option ( 'require_name_email' );
2010-01-23 19:06:37 +01:00
$aria_req = ( $req ? " aria-required='true' " : '' );
2013-06-06 17:31:34 +02:00
$html5 = 'html5' === $args [ 'format' ];
2013-03-13 21:31:43 +01:00
$fields = array (
2012-10-05 18:34:32 +02:00
'author' => '<p class="comment-form-author">' . '<label for="author">' . __ ( 'Name' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
2010-04-16 20:29:39 +02:00
'<input id="author" name="author" type="text" value="' . esc_attr ( $commenter [ 'comment_author' ] ) . '" size="30"' . $aria_req . ' /></p>' ,
2012-10-05 18:34:32 +02:00
'email' => '<p class="comment-form-email"><label for="email">' . __ ( 'Email' ) . ( $req ? ' <span class="required">*</span>' : '' ) . '</label> ' .
2013-07-05 23:59:10 +02:00
'<input id="email" name="email" ' . ( $html5 ? 'type="email"' : 'type="text"' ) . ' value="' . esc_attr ( $commenter [ 'comment_author_email' ] ) . '" size="30"' . $aria_req . ' /></p>' ,
2013-04-08 01:57:35 +02:00
'url' => '<p class="comment-form-url"><label for="url">' . __ ( 'Website' ) . '</label> ' .
2013-07-05 23:59:10 +02:00
'<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr ( $commenter [ 'comment_author_url' ] ) . '" size="30" /></p>' ,
2010-04-15 18:25:08 +02:00
);
2010-05-03 20:48:33 +02:00
$required_text = sprintf ( ' ' . __ ( 'Required fields are marked %s' ), '<span class="required">*</span>' );
2013-09-23 23:21:09 +02:00
/**
* Filter the default comment form fields .
*
* @ since 3.0 . 0
*
* @ param array $fields The default comment fields .
*/
$fields = apply_filters ( 'comment_form_default_fields' , $fields );
2010-04-15 18:25:08 +02:00
$defaults = array (
2013-09-23 23:21:09 +02:00
'fields' => $fields ,
2013-04-08 01:57:35 +02:00
'comment_field' => '<p class="comment-form-comment"><label for="comment">' . _x ( 'Comment' , 'noun' ) . '</label> <textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p>' ,
2011-12-14 00:45:31 +01:00
'must_log_in' => '<p class="must-log-in">' . sprintf ( __ ( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url ( apply_filters ( 'the_permalink' , get_permalink ( $post_id ) ) ) ) . '</p>' ,
2012-07-30 20:30:03 +02:00
'logged_in_as' => '<p class="logged-in-as">' . sprintf ( __ ( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), get_edit_user_link (), $user_identity , wp_logout_url ( apply_filters ( 'the_permalink' , get_permalink ( $post_id ) ) ) ) . '</p>' ,
2010-05-03 20:48:33 +02:00
'comment_notes_before' => '<p class="comment-notes">' . __ ( 'Your email address will not be published.' ) . ( $req ? $required_text : '' ) . '</p>' ,
2010-05-16 08:38:58 +02:00
'comment_notes_after' => '<p class="form-allowed-tags">' . sprintf ( __ ( 'You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: %s' ), ' <code>' . allowed_tags () . '</code>' ) . '</p>' ,
2010-04-15 18:25:08 +02:00
'id_form' => 'commentform' ,
'id_submit' => 'submit' ,
'title_reply' => __ ( 'Leave a Reply' ),
'title_reply_to' => __ ( 'Leave a Reply to %s' ),
'cancel_reply_link' => __ ( 'Cancel reply' ),
'label_submit' => __ ( 'Post Comment' ),
2013-03-13 21:31:43 +01:00
'format' => 'xhtml' ,
2010-04-15 18:25:08 +02:00
);
2013-09-23 23:21:09 +02:00
/**
* Filter the comment form default arguments .
*
* Use 'comment_form_default_fields' to filter the comment fields .
*
* @ since 3.0 . 0
*
* @ param array $defaults The default comment form arguments .
*/
2010-01-23 19:06:37 +01:00
$args = wp_parse_args ( $args , apply_filters ( 'comment_form_defaults' , $defaults ) );
2010-04-28 09:17:20 +02:00
2010-01-23 19:06:37 +01:00
?>
2012-04-30 03:47:22 +02:00
< ? php if ( comments_open ( $post_id ) ) : ?>
2013-09-23 23:21:09 +02:00
< ? php
/**
* Fires before the comment form .
*
* @ since 3.0 . 0
*/
do_action ( 'comment_form_before' );
?>
2013-06-27 23:18:08 +02:00
< div id = " respond " class = " comment-respond " >
< h3 id = " reply-title " class = " comment-reply-title " >< ? php comment_form_title ( $args [ 'title_reply' ], $args [ 'title_reply_to' ] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
2010-01-23 19:06:37 +01:00
< ? php if ( get_option ( 'comment_registration' ) && ! is_user_logged_in () ) : ?>
< ? php echo $args [ 'must_log_in' ]; ?>
2013-09-23 23:21:09 +02:00
< ? php
/**
* 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' );
?>
2010-01-23 19:06:37 +01:00
< ? php else : ?>
2013-06-27 23:18:08 +02:00
< form action = " <?php echo site_url( '/wp-comments-post.php' ); ?> " method = " post " id = " <?php echo esc_attr( $args['id_form'] ); ?> " class = " comment-form " < ? php echo $html5 ? ' novalidate' : '' ; ?> >
2013-09-23 23:21:09 +02:00
< ? php
/**
* Fires at the top of the comment form , inside the < form > tag .
*
* @ since 3.0 . 0
*/
do_action ( 'comment_form_top' );
?>
2010-01-23 19:06:37 +01:00
< ? php if ( is_user_logged_in () ) : ?>
2013-09-23 23:21:09 +02:00
< ? php
/**
* Filter the 'logged in' message for the comment form for display .
*
* @ since 3.0 . 0
*
* @ param string $args [ 'logged_in_as' ] The logged - in - as HTML - formatted message .
* @ 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 .
*/
echo apply_filters ( 'comment_form_logged_in' , $args [ 'logged_in_as' ], $commenter , $user_identity );
?>
< ? php
/**
* 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 );
?>
2010-01-23 19:06:37 +01:00
< ? php else : ?>
2010-12-03 10:44:17 +01:00
< ? php echo $args [ 'comment_notes_before' ]; ?>
2010-01-23 19:06:37 +01:00
< ? php
2013-09-23 23:21:09 +02:00
/**
* Fires before the comment fields in the comment form .
*
* @ since 3.0 . 0
*/
2010-01-23 19:06:37 +01:00
do_action ( 'comment_form_before_fields' );
foreach ( ( array ) $args [ 'fields' ] as $name => $field ) {
2013-09-23 23:21:09 +02:00
/**
* Filter a comment form field for display .
*
* The dynamic portion of the filter hook , $name , refers to the name
* of the comment form field . Such as 'author' , 'email' , or 'url' .
*
* @ since 3.0 . 0
*
* @ param string $field The HTML - formatted output of the comment form field .
*/
2010-01-23 19:06:37 +01:00
echo apply_filters ( " comment_form_field_ { $name } " , $field ) . " \n " ;
}
2013-09-23 23:21:09 +02:00
/**
* Fires after the comment fields in the comment form .
*
* @ since 3.0 . 0
*/
2010-01-23 19:06:37 +01:00
do_action ( 'comment_form_after_fields' );
?>
< ? php endif ; ?>
2013-09-23 23:21:09 +02:00
< ? php
/**
* Filter 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' , $args [ 'comment_field' ] );
?>
2010-02-08 21:54:29 +01:00
< ? php echo $args [ 'comment_notes_after' ]; ?>
2010-02-17 20:28:03 +01:00
< p class = " form-submit " >
2010-10-29 02:31:27 +02:00
< input name = " submit " type = " submit " id = " <?php echo esc_attr( $args['id_submit'] ); ?> " value = " <?php echo esc_attr( $args['label_submit'] ); ?> " />
2011-05-05 21:33:47 +02:00
< ? php comment_id_fields ( $post_id ); ?>
2010-02-17 20:28:03 +01:00
</ p >
2013-09-23 23:21:09 +02:00
< ? php
/**
* Fires at the bottom of the comment form , inside the closing </ form > tag .
*
2013-10-30 15:39:10 +01:00
* @ since 1.5 . 0
2013-09-23 23:21:09 +02:00
*
* @ param int $post_id The post ID .
*/
do_action ( 'comment_form' , $post_id );
?>
2010-01-23 19:06:37 +01:00
</ form >
< ? php endif ; ?>
2010-04-15 18:16:51 +02:00
</ div ><!-- #respond -->
2013-09-23 23:21:09 +02:00
< ? php
/**
* Fires after the comment form .
*
* @ since 3.0 . 0
*/
do_action ( 'comment_form_after' );
else :
/**
* Fires after the comment form if comments are closed .
*
* @ since 3.0 . 0
*/
do_action ( 'comment_form_comments_closed' );
endif ;
2010-01-23 19:06:37 +01:00
}