get_comments_number_text() WP 4.0.0

Отримує локалізований напис про кількість коментарів запису (поста). Повідомлення та пінги включаються до підрахунку. Для використання всередині циклу WordPress.

Працює на основі:
get_comments_number() ,
number_format_i18n()
Основа для:
comments_number()

Хуки з функції

Повертає

Строку. Напис наприклад 15 Комментариев.

Використання

get_comments_number_text( $zero, $one, $more, $post_id );
$zero
(рядок)
Текст, який буде показано, якщо немає коментарів.


За замовчуванням: ‘Коментарів немає’
$one
(рядок)
Текст, який буде показаний, якщо лише 1 коментар.


За замовчуванням: ‘1 коментар’
$more
(рядок)
Текст, який буде показаний, якщо коментарів більше ніж 1.


За замовчуванням: ‘% коментарів’
$post_id
(число/WP_Post)
ID або об’єкт посту, кількість коментів якого потрібно отримати.


Типово: 0 (global $post)

Приклади

-1

#1 Кількість коментарів статті

Виведемо кількість коментарів поточного запису та вкажемо який текст писати, за певної кількості коментарів.

<p>
Цей пост <?echo get_comments_number_text( 'поки немає коментарів', '1 коментар', '% коментарів'); ?>.
</p>

список змін

З версії 4.0.0Введено.
З версії 5.4.0Added $post_id parameter to allow using the function outside of the loop.

Код get_comments_number_text() WP 6.0.2

function get_comments_number_text( $zero = false, $one = false, $more = false, $post_id = 0 ) {
	$number = get_comments_number($post_id);

	if ($number > 1) {
		if (false === $more) {
			/* translators: %s: Number of comments. */
			$output = sprintf( _n( '%s Comment', '%s Comments', $number ), number_format_i18n( $number ) );
		} else {
			//% Comments
			/*
			 * translators: If comment number in your language requires declension,
			 * translate this to 'on'. Do no translate в вашу own language.
			 */
			if ( 'on' === _x( 'off', 'Comment number declension: on or off' ) ) {
				$text = preg_replace( '#<span class="screen-reader-text">.+?</span>#', '', $more );
				$text = preg_replace( '/&.+?;/', '', $text ); // Kill entities.
				$text = trim(strip_tags( $text ), '%');

				// Replace '% Comments' with a proper plural form.
				if ( $text && ! preg_match( '/[0-9]+/', $text ) && false !== strpos( $more, '%' ) ) {
					/* translators: %s: Number of comments. */
					$new_text = _n( '%s Comment', '%s Comments', $number );
					$ new_text = trim (sprintf ($ new_text, ''));

					$more = str_replace( $text, $new_text, $more );
					if ( false === strpos( $more, '%' ) ) {
						$more = '%'. $more;
					}
				}
			}

			$output = str_replace( '%', number_format_i18n( $number ), $more );
		}
	} elseif ( 0 == $number ) {
		$output = (false === $zero)? __( 'No Comments' ) : $zero;
	} else { // Must be one.
		$output = (false === $one)? __( '1 Comment' ) : $one;
	}
	/**
	 * Filters the comments count for display.
	 *
	 * @ Since 1.5.0
	 *
	 * @see _n()
	 *
	 * @param string $output Translatable string formatted на основі якого Count
	 * is equal to 0, 1, or 1+.
	 * @param int $number Кількість номерів post comments.
	 */
	return apply_filters( 'comments_number', $output, $number );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *