Существует ли способ считать все опубликованные сообщения от пользовательской таксономии?
При оглядывании я нашел этот отрывок, но мне не удалось заставить его работать …
global $wpdb;
$query = "
SELECT COUNT( DISTINCT cat_posts.ID ) AS post_count
FROM wp_term_taxonomy AS cat_term_taxonomy INNER JOIN wp_terms AS cat_terms ON
cat_term_taxonomy.term_id = cat_terms.term_id
INNER JOIN wp_term_relationships AS cat_term_relationships
ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id
INNER JOIN wp_posts AS cat_posts
ON cat_term_relationships.object_id = cat_posts.ID
WHERE cat_posts.post_status = 'publish'
AND cat_posts.post_type = 'post'
AND cat_term_taxonomy.taxonomy = 'YOUR-CUSTOM-TAXONOMY'
AND cat_terms.slug IN ('TERM-SLUG-1, TERM-SLUG-2')
";
return $wpdb->get_var($query);
Используйте экземпляр WP_Query для запросов базы данных. http://codex.wordpress.org/Class_Reference/WP_Query
Запрашивать базу данных для пользовательского использования taxonomies,
$query = new WP_Query( array( 'people' => 'bob' ) );
Для получения дополнительной информации на доступных вариантах см.: Параметры Таксономии http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters
Получите опубликованное использование сообщений
'post_status' => 'publish'
Использовать found_posts
к retrive количество сообщений
$count = $query->found_posts;
function wp_get_productcat_postcount($id) {
//return $count;
$args = array(
'post_type' => 'product', //post type, I used 'product'
'post_status' => 'publish', // just tried to find all published post
'posts_per_page' => -1, //show all
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat', //taxonomy name here, I used 'product_cat'
'field' => 'id',
'terms' => array( $id )
)
)
);
$query = new WP_Query( $args);
/*
echo '<pre>';
print_r($query->post_count);
echo '</pre>';
*/
return (int)$query->post_count;
}
Wordpress добавляет количество атрибута к каждой таксономии и обновляет его каждый раз, когда новое сообщение вставляется или обновляется. Поскольку это не хочет переходить к базе данных снова и делать вычисления для получения количества сообщений в таксономии.
echo $custom_tax_obj->count;
Можно сделать это с текущим объектом с get_queried_object ()
$posts = get_queried_object(); echo $posts->count;
Иначе можно ли излишне выполнить второй запрос, правильно?