Your filter callback isn’t accepting any arguments from the hook. When you write the callback function you need to include the arguments passed in apply_filters
, and in your add_filter()
call you need to specify how many of the arguments you’re using:
// Accept all 4 arguments provided to callbacks for this filter.
function wpse_296863_author_post_count( $count, $userid, $post_type, $public_only ) {
global $wpdb;
$where = get_posts_by_author_sql( $post_type, true, $userid, $public_only );
$where .= " AND post_date BETWEEN '2018-03-11' AND '2018-03-13'";
$result = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
return $result;
}
add_filter( 'get_usernumposts', 'wpse_296863_author_post_count', 10, 4 ); // Using 4 arguments.
Also note:
- I prefixed the function. Your code should be prefixed with something unique to your project to avoid conflicts.
- You were missing
global $wpdb;
. You can’t use$wpdb->get_var()
without it. - I passed through the original values from the filter into
get_posts_by_author_sql()
, otherwise all post counts will be for the one user. I assume you’d done this for testing.