Описание
Получает количество записей любого типа записей и любых статусов (опубликовано, черновик).
Функция возвращает объект статусов типа записи. Каждый статут содержит количество записей в нем. Т.е. объект содержит количество опубликованных постов, черновиков и т.д.
Использование
<?php wp_count_posts( $type, $perm ); ?>
Параметры
- $type (строка)
- Тип поста записи которого надо посчитать.
По умолчанию: 'post' - $perm (строка)
- Чтобы текущему пользователю показывались личные записи ставим этот параметр в readable.
По умолчанию: ''
Примеры
1. Базовое использование
Вернет объект данных о числе записей каждого статуса. Можно использовать функцию var_dump(), чтобы посмотреть что содержиться в объекте.
<?php
$count_posts = wp_count_posts();
?>
// в итоге получим что-то такое:
/*
stdClass Object
(
[publish] => 60
[future] => 0
[draft] => 9
[pending] => 3
[private] => 0
[trash] => 0
[auto-draft] => 3
[inherit] => 0
)
*/
2. Количество опубликованных постов
Чтобы получить количество опубликованных постов используем такой код:
$count_posts = wp_count_posts(); $published_posts = $count_posts->publish;
Если не нужна поддержка PHP4, то можно использовать такую короткую запись верхнего кода:
$published_posts = wp_count_posts()->publish;
3. Считаем черновики
Чтобы посчитать сколько у нас в базе данных черновиков используем такой код (для PHP5):
$draft_posts = wp_count_posts()->draft;
4. Считаем другие типы записей
Чтобы посчитать сколько у нас опубликовано записей произвольного типа, допустим new_post_type, используем такой код:
$published_posts = wp_count_posts('new_post_type')->publish;
wp_count_posts()
из файла: /wp-includes/post.php WP 3.3.2function wp_count_posts( $type = 'post', $perm = '' ) {
global $wpdb;
$user = wp_get_current_user();
$cache_key = $type;
$query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";
if ( 'readable' == $perm && is_user_logged_in() ) {
$post_type_object = get_post_type_object($type);
if ( !current_user_can( $post_type_object->cap->read_private_posts ) ) {
$cache_key .= '_' . $perm . '_' . $user->ID;
$query .= " AND (post_status != 'private' OR ( post_author = '$user->ID' AND post_status = 'private' ))";
}
}
$query .= ' GROUP BY post_status';
$count = wp_cache_get($cache_key, 'counts');
if ( false !== $count )
return $count;
$count = $wpdb->get_results( $wpdb->prepare( $query, $type ), ARRAY_A );
$stats = array();
foreach ( get_post_stati() as $state )
$stats[$state] = 0;
foreach ( (array) $count as $row )
$stats[$row['post_status']] = $row['num_posts'];
$stats = (object) $stats;
wp_cache_set($cache_key, $stats, 'counts');
return $stats;
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.
Существует несколько разновидностей сайтов, к ним относятся: блог, корпоративный сайт, сайт-визитка, интернет магазин, портал, новостной сайт, форум. Каждый из этих типов сайтов обладает своими характерными особенностями и обычно под каждый из типов существует наиболее подходящий движок.