The ‘pre_wp_list_authors_post_counts_query’ filter allows you to short-circuit the query for author post counts in WordPress.
Usage
$post_counts = apply_filters( 'pre_wp_list_authors_post_counts_query', $post_counts, $parsed_args );
Parameters
- $post_counts (int[]|false): Array of post counts, keyed by author ID.
- $parsed_args (array): The arguments passed to
wp_list_authors()combined with the defaults.
Examples
Display author post counts for specific authors
function filter_authors_post_counts($post_counts, $parsed_args) {
$include_authors = array(1, 3, 5); // Author IDs to include
if (empty($post_counts)) {
$post_counts = array();
foreach ($include_authors as $author_id) {
$post_counts[$author_id] = count_user_posts($author_id);
}
}
return $post_counts;
}
add_filter('pre_wp_list_authors_post_counts_query', 'filter_authors_post_counts', 10, 2);
This code snippet filters the author post counts to display only for specific authors with IDs 1, 3, and 5.
Exclude post counts for specific authors
function exclude_authors_post_counts($post_counts, $parsed_args) {
$exclude_authors = array(2, 4); // Author IDs to exclude
if (!empty($post_counts)) {
foreach ($exclude_authors as $author_id) {
unset($post_counts[$author_id]);
}
}
return $post_counts;
}
add_filter('pre_wp_list_authors_post_counts_query', 'exclude_authors_post_counts', 10, 2);
This code snippet removes the post counts for authors with IDs 2 and 4.
Display post counts for authors with more than 10 posts
function more_than_ten_posts($post_counts, $parsed_args) {
if (!empty($post_counts)) {
foreach ($post_counts as $author_id => $count) {
if ($count <= 10) {
unset($post_counts[$author_id]);
}
}
}
return $post_counts;
}
add_filter('pre_wp_list_authors_post_counts_query', 'more_than_ten_posts', 10, 2);
This code snippet filters the author post counts to only display for authors with more than 10 posts.
Display post counts for authors with a specific user role
function specific_role_post_counts($post_counts, $parsed_args) {
$role = 'editor'; // User role to include
if (empty($post_counts)) {
$post_counts = array();
$users = get_users(array('role' => $role));
foreach ($users as $user) {
$post_counts[$user->ID] = count_user_posts($user->ID);
}
}
return $post_counts;
}
add_filter('pre_wp_list_authors_post_counts_query', 'specific_role_post_counts', 10, 2);
This code snippet filters the author post counts to display only for authors with the ‘editor’ user role.
Display post counts for authors with custom post types
function custom_post_type_counts($post_counts, $parsed_args) {
$post_type = 'product'; // Custom post type to include
if (
(empty($post_counts)) {
$post_counts = array();
$authors = get_users();
foreach ($authors as $author) {
$post_counts[$author->ID] = count_user_posts($author->ID, $post_type);
}
}
return $post_counts;
}
add_filter('pre_wp_list_authors_post_counts_query', 'custom_post_type_counts', 10, 2);
This code snippet filters the author post counts to display only for authors with custom post types, such as ‘product’.