Displays the link to the comments for the current post ID.
Parameters
$zero
false|stringoptional- String to display when no comments.
Default:
false
$one
false|stringoptional- String to display when only one comment is available.
Default:
false
$more
false|stringoptional- String to display when there are more than one comment.
Default:
false
$css_class
stringoptional- CSS class to use for comments.
Default:
''
$none
false|stringoptional- String to display when comments have been turned off.
Default:
false
Source
function comments_popup_link( $zero = false, $one = false, $more = false, $css_class = '', $none = false ) {
$post_id = get_the_ID();
$post_title = get_the_title();
$comments_number = get_comments_number( $post_id );
if ( false === $zero ) {
/* translators: %s: Post title. */
$zero = sprintf( __( 'No Comments<span class="screen-reader-text"> on %s</span>' ), $post_title );
}
if ( false === $one ) {
/* translators: %s: Post title. */
$one = sprintf( __( '1 Comment<span class="screen-reader-text"> on %s</span>' ), $post_title );
}
if ( false === $more ) {
/* translators: 1: Number of comments, 2: Post title. */
$more = _n(
'%1$s Comment<span class="screen-reader-text"> on %2$s</span>',
'%1$s Comments<span class="screen-reader-text"> on %2$s</span>',
$comments_number
);
$more = sprintf( $more, number_format_i18n( $comments_number ), $post_title );
}
if ( false === $none ) {
/* translators: %s: Post title. */
$none = sprintf( __( 'Comments Off<span class="screen-reader-text"> on %s</span>' ), $post_title );
}
if ( 0 == $comments_number && ! comments_open() && ! pings_open() ) {
printf(
'<span%1$s>%2$s</span>',
! empty( $css_class ) ? ' class="' . esc_attr( $css_class ) . '"' : '',
$none
);
return;
}
if ( post_password_required() ) {
_e( 'Enter your password to view comments.' );
return;
}
if ( 0 == $comments_number ) {
$respond_link = get_permalink() . '#respond';
/**
* Filters the respond link when a post has no comments.
*
* @since 4.4.0
*
* @param string $respond_link The default response link.
* @param int $post_id The post ID.
*/
$comments_link = apply_filters( 'respond_link', $respond_link, $post_id );
} else {
$comments_link = get_comments_link();
}
$link_attributes = '';
/**
* Filters the comments link attributes for display.
*
* @since 2.5.0
*
* @param string $link_attributes The comments link attributes. Default empty.
*/
$link_attributes = apply_filters( 'comments_popup_link_attributes', $link_attributes );
printf(
'<a href="%1$s"%2$s%3$s>%4$s</a>',
esc_url( $comments_link ),
! empty( $css_class ) ? ' class="' . $css_class . '" ' : '',
$link_attributes,
get_comments_number_text( $zero, $one, $more )
);
}
Hooks
- apply_filters( ‘comments_popup_link_attributes’,
string $link_attributes ) Filters the comments link attributes for display.
- apply_filters( ‘respond_link’,
string $respond_link ,int $post_id ) Filters the respond link when a post has no comments.
Changelog
Version | Description |
---|---|
0.71 | Introduced. |
Load Different CSS classes according to Comment-condition
If you want to load different classes into
comments_popup_link(),
use the following:Text Response for Number of Comments with Localization
Displays the comments popup link, using “No comments yet” for no comments, “1 comment” for one, “% comments” for more than one (% replaced by # of comments), and “Comments are off for this post” if commenting is disabled. Additionally, comments-link is a custom CSS class for the link.
Text Response for Number of Comments
Displays the comments popup link, using “No comments yet” for no comments, “1 comment” for one, “% comments” for more than one (% replaced by # of comments), and “Comments are off for this post” if commenting is disabled. Additionally,
comments-link
is a custom CSS class for the link.Hide Comment Link When Comments Are Deactivated
Hides the paragraph element <p></p> that contains the
comments_popup_link
when comments are deactivated in the Write>Post screen. Good for those who want enable/disable comments post by post. Must be used in the loop.