Intereting Posts
Включить «Мои блоги» в пользовательской установке Установка плагина для комментариев Facebook без потери всех предыдущих комментариев в WordPress? Подсчитайте, сколько категорий принадлежит должности Несколько логотипов изображений для темы Как я могу заказать get_the_tags? невозможно отобразить мета-значение изображения в качестве фона Правильный способ иметь несколько установок с одной базой данных Шаблон WordPress для одной страницы Child Theme – как добавить нового виджета в определенное место? Установка почтовых метаданных в случайное значение во время перехода статуса должности / публикации Изменить статус сообщения Проверьте, есть ли меню id = $ specific_id – затем вставьте конкретный <img> Как я могу показать свой последний твит в своем блоге WordPress? Невозможно загрузить результаты поиска с помощью ajax Перенаправление на страницу, если предки пусты

Как получить результат comments_number () как строку, а не распечатывать ее?

comments_number() весьма полезен: он принимает результат get_comments_number() и подготавливает вывод с помощью некоторой магии локализации. К сожалению, он выводит результат, когда он выполняется, но не дает возможности просто вернуть строку.

Как я могу получить строку без ее печати? Я хочу использовать его как переменную.

Самый простой способ:

 ob_start(); comments_number(); $data = ob_get_clean(); 

$ data будет содержать текст.

Начиная с WordPress 4.0, вы можете использовать функцию get_comments_number_text() . См. Билет № 10177 .


Старый ответ

Создайте функцию-обертку: отфильтруйте результат comments_number() , сохраните ее в своей оболочке и верните пустую строку в нативную функцию. return реальную строку в свою функцию обертки.

 /** * 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; } } 

Применение:

 $comm_num = t5_get_comments_number(); print "We found $comm_num."; // Prints for example: We found 51 Comments.