count_user_posts

Выводит количество записей указанного пользователя (автора).

Хуки из функции:
get_usernumposts
Возвращает

Выводит на экран число (количество записей пользователя).

Использование

<?php count_user_posts( $userid, $post_type, $public_only ); ?>
$userid(число) (обязательный)
ID пользователя, количество записей которого нужно получить.
По умолчанию: нет
$post_type(строка)
Тип поста, количество записей (элементов) которого нужно посчитать. C версии 4.1.
По умолчанию: ‘post’
$public_only(логический)
Получать только количество опубликованных постов. C версии 4.3.
По умолчанию: false

Примеры

#1 Получим количество постов пользователя

Выведем надпись, показывающую сколько постов опубликовано пользователям с ID 1:

<?php echo 'Всего постов: ' . count_user_posts(1); ?>

Получим: Всего постов: 321

#2 Количество записей произвольного типа автора

С версии 4.1. в функцию можно передать второй параметр $post_type, чтобы посчитать количество записей пользователя и ограничиться типом записи.

Допустим, у нас есть тип записи book и нам нужно посчитать сколько записей этого типа опубликовал пользователь с ID = 5:

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);
}

Заметки

В WordPress нет функции count_autor_posts(), но count_user_posts() по смыслу полностью подходит для использования взамен.

Код из


wp-includes/user.php

WP 4.7.2

<?php
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 the 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       The user's post count.
	 * @param int          $userid      User ID.
	 * @param string|array $post_type   Single post type or array of post types to count the number of posts for.
	 * @param bool         $public_only Whether to limit counted posts to public posts.
	 */
	return apply_filters( 'get_usernumposts', $count, $userid, $post_type, $public_only );
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *