Introduce $post_type
param for count_user_posts()
.
Props Caspie, engelen, DrewAPicture. Fixes #21364. git-svn-id: https://develop.svn.wordpress.org/trunk@30322 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
403cf989ec
commit
3544e20e9a
@ -250,16 +250,18 @@ function wp_validate_logged_in_cookie( $user_id ) {
|
|||||||
* Number of posts user has written.
|
* Number of posts user has written.
|
||||||
*
|
*
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
|
* @since 4.0.0 Added $post_type parameter.
|
||||||
*
|
*
|
||||||
* @global wpdb $wpdb WordPress database object for queries.
|
* @global wpdb $wpdb WordPress database object for queries.
|
||||||
*
|
*
|
||||||
* @param int $userid User ID.
|
* @param int $userid User ID.
|
||||||
* @return int Amount of posts user has written.
|
* @param string $post_type Optional. Post type to count the number of posts for. Default 'post'.
|
||||||
|
* @return int Number of posts the user has written in this post type.
|
||||||
*/
|
*/
|
||||||
function count_user_posts($userid) {
|
function count_user_posts( $userid, $post_type = 'post' ) {
|
||||||
global $wpdb;
|
global $wpdb;
|
||||||
|
|
||||||
$where = get_posts_by_author_sql('post', true, $userid);
|
$where = get_posts_by_author_sql( $post_type, true, $userid );
|
||||||
|
|
||||||
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
|
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
|
||||||
|
|
||||||
@ -267,11 +269,13 @@ function count_user_posts($userid) {
|
|||||||
* Filter the number of posts a user has written.
|
* Filter the number of posts a user has written.
|
||||||
*
|
*
|
||||||
* @since 2.7.0
|
* @since 2.7.0
|
||||||
|
* @since 4.0.0 Added $post_type parameter.
|
||||||
*
|
*
|
||||||
* @param int $count The user's post count.
|
* @param int $count The user's post count.
|
||||||
* @param int $userid User ID.
|
* @param int $userid User ID.
|
||||||
|
* @param string $post_type Post type to count the number of posts for.
|
||||||
*/
|
*/
|
||||||
return apply_filters( 'get_usernumposts', $count, $userid );
|
return apply_filters( 'get_usernumposts', $count, $userid, $post_type );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
80
tests/phpunit/tests/user/countUserPosts.php
Normal file
80
tests/phpunit/tests/user/countUserPosts.php
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group user
|
||||||
|
* @group post
|
||||||
|
*/
|
||||||
|
class Tests_User_CountUserPosts extends WP_UnitTestCase {
|
||||||
|
static $user_id;
|
||||||
|
static $post_ids = array();
|
||||||
|
|
||||||
|
public static function setUpBeforeClass() {
|
||||||
|
$factory = new WP_UnitTest_Factory();
|
||||||
|
|
||||||
|
self::$user_id = $factory->user->create( array(
|
||||||
|
'role' => 'author',
|
||||||
|
'user_login' => 'count_user_posts_user',
|
||||||
|
) );
|
||||||
|
|
||||||
|
self::$post_ids = $factory->post->create_many( 4, array(
|
||||||
|
'post_author' => self::$user_id,
|
||||||
|
'post_type' => 'post',
|
||||||
|
) );
|
||||||
|
self::$post_ids = array_merge( self::$post_ids, $factory->post->create_many( 3, array(
|
||||||
|
'post_author' => self::$user_id,
|
||||||
|
'post_type' => 'wptests_pt',
|
||||||
|
) ) );
|
||||||
|
self::$post_ids = array_merge( self::$post_ids, $factory->post->create_many( 2, array(
|
||||||
|
'post_author' => 12345,
|
||||||
|
'post_type' => 'wptests_pt',
|
||||||
|
) ) );
|
||||||
|
self::$post_ids = array_merge( self::$post_ids, $factory->post->create_many( 1, array(
|
||||||
|
'post_author' => 12345,
|
||||||
|
'post_type' => 'wptests_pt',
|
||||||
|
) ) );
|
||||||
|
|
||||||
|
self::commit_transaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function tearDownAfterClass() {
|
||||||
|
if ( is_multisite() ) {
|
||||||
|
wpmu_delete_user( self::$user_id );
|
||||||
|
} else {
|
||||||
|
wp_delete_user( self::$user_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( self::$post_ids as $post_id ) {
|
||||||
|
wp_delete_post( $post_id, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
self::commit_transaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
register_post_type( 'wptests_pt' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tearDown() {
|
||||||
|
parent::tearDown();
|
||||||
|
_unregister_post_type( 'wptests_pt' );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function test_count_user_posts_post_type_should_default_to_post() {
|
||||||
|
$this->assertEquals( 4, count_user_posts( self::$user_id ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 21364
|
||||||
|
*/
|
||||||
|
public function test_count_user_posts_post_type_post() {
|
||||||
|
$this->assertEquals( 4, count_user_posts( self::$user_id, 'post' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ticket 21364
|
||||||
|
*/
|
||||||
|
public function test_count_user_posts_post_type_cpt() {
|
||||||
|
$this->assertEquals( 3, count_user_posts( self::$user_id, 'wptests_pt' ) );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user