Количество постов для пользовательских постов ретутнов 0 - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь получить количество постов (для пользовательского типа поста) по автору, сначала я использовал count_user_posts($userID , 'recipe'), затем я попытался обойти:

function nbrPostByUser( $userid, $post_type = ['recipe'] ) {
    global $wpdb;

    $where = get_posts_by_author_sql( $post_type, true, $userid );

    $count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );

    return apply_filters( 'get_usernumposts', $count, $userid );
}

всегда возвращается 0….после отладки я думаю, что причина в том, что мой пользовательский тип записи не включен в глобальный $wp_post_types.

, правильны ли мои подходы?если да, то что пошло не так?

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Я не нашел объяснения, почему WordPress возвращает 0 с пользовательским типом записи, поэтому я решил мою проблему с помощью хорошего друга $ wpdb. Вот функция, которую я использую, и она работает как шарм:

function getNbrPostsByUser($userId, $postType){
        global $wpdb;

        $nbrPost = $wpdb->get_var( $wpdb->prepare( 
            "
                SELECT COUNT(*)
                FROM $wpdb->posts
                WHERE post_type = %s AND post_author = %d AND post_status = 'publish'
            ", 
            $postType,
            $userId

        ) );

        return $nbrPost;
    }
0 голосов
/ 14 марта 2019

Создайте новый get_posts для всех типов постов получателей с идентификатором пользователя в качестве желаемого автора.

// Prepare the query arguments
$args = [
    'posts_per_page'   => -1,
    'post_type'        => 'article',
    'author'           => 1,
    'post_status'      => 'publish',
];

// Get all the posts
$posts = get_posts($args);

// Return the count of all the recipies for a user:
return count($posts);
...