count_user_posts() WP 3.0.0

Отримує кількість записів вказаного типу для вказаного користувача (автора).

WordPress не має функції count_author_posts() , але ця функція за змістом повністю підходить.

Якщо потрібно отримати кількість записів відразу кількох користувачів, використовуйте count_many_users_posts() .

Працює на основі:
get_posts_by_author_sql()
1 раз – 0.001945 сек
(дуже повільно) | 50000 разів – 46.58 сек
(дуже повільно) |
PHP 7.1.2, WP 4.7.3

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

Повертає

Строку. Завжди повертає число у вигляді рядка – кількість записів користувача.

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

count_user_posts($userid, $post_type, $public_only);
$userid
(число) (обов’язковий)
ID користувача, кількість записів якого потрібно отримати.
$post_type
(рядок/масив)
Тип посту, кількість записів (елементів) якого слід порахувати.


За замовчуванням: ‘post’
$public_only
(логічний)

Повернути лише громадські пости ( post_status = publish).

  • false— додати приватні записи. У WHERE частину запиту буде додано умову OR post_status = 'private'. Тобто. для користувача з правами перегляду приватних записів вони будуть додані на запит.

  • true— у запит потраплять лише публічні посади, незалежно від прав користувача.

Типово: false

Приклади

0

#1 Демо

$count = count_user_posts(1); // string(2) "16"
0

#2 Отримаємо кількість постів користувача

Виведемо напис, що показує скільки постів опубліковано користувачем з ID 1:

<?php echo 'Усього постів: ' . count_user_posts(1); ?>

Отримаємо:Всего постов: 321

0

#3 Кількість записів (довільного типу) автора

Допустимо, у нас є тип запису bookі нам потрібно порахувати скільки записів цього типу опублікував користувач з ID = 5:

<?php echo 'Всього книг опубліковано користувачем 5: ' . count_user_posts(5, 'book'); ?>
0

#4 Підтримка довільних типів записів. Для WP менше 4.1.

Цей приклад не є актуальним для версій WP 4.1+, тому що з’явився другий параметр, що дозволяє це зробити.

Щоб підраховувати кількість записів довільних типів, створимо свою функцію. Тут тип запису вказується у другому параметрі, а першому ID користувача як і у count_user_posts().

function count_user_posts_by_type( $userid, $post_type = 'post' ){
	Global $wpdb;

	$where = get_posts_by_author_sql( $post_type, TRUE, $userid );

	$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );

	return apply_filters( 'get_usernumposts', $count, $userid );
}

нотатки

  • Global. wpdb. $wpdb WordPress database abstraction object.

список змін

З версії 3.0.0Введено.
З версії 4.1.0Added argument $post_type .
З версії 4.3.0Added $public_only argument. Added ability to pass array of post types to $post_type .

Код count_user_posts() WP 6.0.2

function count_user_posts( $userid, $post_type = 'post', $public_only = false ) {
	Global $wpdb;

	$where = get_posts_by_author_sql( $post_type, true, $userid, $public_only );

	$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );

	/**
	 * Filters number of posts a user has written.
	 *
	 * @ Since 2.7.0
	 * @since 4.1.0 Added `$post_type` argument.
	 * @since 4.3.1 Added `$public_only` argument.
	 *
	 * @param int $count User's post count.
	 * @param int $userid User ID.
	 * @param string|array $post_type Таблиця повідомлень 1 або array of post types до count number of posts for.
	 * @param bool $public_only Whether до ліміту counted posts до public posts.
	 */
	return apply_filters( 'get_usernumposts', $count, $userid, $post_type, $public_only);
}

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

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