Since WordPress 4.0, you can use the function get_comments_number_text()
. See ticket #10177.
Old answer
Create a wrapper function: filter the result of comments_number()
, store it in your wrapper, and return an empty string to the native function. return
the real string in your wrapper function.
/**
* Wrapper for native comments_number().
*
* This has two functions:
* 1. It is can be called from a theme or plugin to get the comments number
* string *returned* for a variable.
* 2. It sets itself as a temorary filter to catch the string. The filter will
* be removed immediately afterwards.
*
* @wp-hook comments_number
* @param string $zero Template for no comments OR the parsed string
* when used as filter.
* @param string $one
* @param string $more
* @return string
*/
function t5_get_comments_number( $zero = FALSE, $one = FALSE, $more = FALSE )
{
static $output = '';
if ( 'comments_number' === current_filter() )
{
remove_filter( current_filter(), __FUNCTION__ );
$output = $zero;
return '';
}
else
{
add_filter( 'comments_number', __FUNCTION__ );
comments_number();
return $output;
}
}
Usage:
$comm_num = t5_get_comments_number();
print "We found $comm_num.";
// Prints for example: We found 51 Comments.