获取当前用户创建的自定义帖子类型计数

时间:2013-04-12 作者:Eckstein

我正在尝试获取当前用户自定义帖子类型中已发布帖子的数量(显示在配置文件页面上)。

我在论坛上找到了这个:

<?php
global $wp_query;
$curauth = $wp_query->get_queried_object();
$post_count = $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->posts WHERE post_author = \'" . $curauth->ID . "\' AND post_type = \'user_video\' AND post_status = \'publish\'");
?>
但是,这只是给了我一个大大的零,尽管肯定有这种类型的帖子。我做错了什么?有没有更好的方法?

6 个回复
最合适的回答,由SO网友:gyo 整理而成

我发布了一个新的答案,因为我在搜索相同的东西时发现了这条线索,这里的解决方案不是最优的。

这个post_type 参数可以是stringarray 职位类型。

function custom_count_posts_by_author($user_id, $post_type = array(\'post\', \'page\', \'custom_post_type\'))
{
    $args = array(
        \'post_type\'      => $post_type,
        \'author\'         => $user_id,
        \'post_status\'    => \'publish\',
        \'posts_per_page\' => -1
    );

    $query = new WP_Query($args);

    return $query->found_posts;
}

SO网友:Michal Mau

我建议使用get_posts() 而不是query_posts() 为了你的目的。

要创建辅助列表(例如,页面底部的相关帖子列表,或侧栏小部件中的链接列表),请尝试创建WP_Query 或使用get_posts(). [source]

现在看起来也更简单了:)

echo count( get_posts( array( 
    \'post_type\' => \'user_video\', 
    \'author\'    => get_current_user_id(), 
    \'nopaging\'  => true, // display all posts
) ) );

SO网友:Eckstein

好的,在更多的Google搜索之后,这似乎可以在不必使用MySQL和直接进入数据库的情况下工作:

<?php 
        $authorid = get_current_user_id();
        query_posts(array( 
            \'post_type\' => \'user_video\',
            \'author\' => $authorid,
        ) ); 
            $count = 0;
            while (have_posts()) : the_post(); 
                $count++; 
            endwhile;
            echo $count;
        wp_reset_query();
    ?>

SO网友:Tomas

在我的作者简介中,这非常有用(ait dir项是自定义帖子类型名称)

<?php  
$idecko = get_the_author_meta( \'ID\' );
echo count_user_posts( $idecko, \'ait-dir-item\' ); ?>     

SO网友:Andrew Bartel

您还需要将$wpdb声明为全局,并使用其前缀方法。

<?php
global $wp_query, $wpdb;
$curauth = $wp_query->get_queried_object();
$post_count = $wpdb->get_var("SELECT COUNT(ID) FROM ".$wpdb->prefix."posts WHERE post_author = \'" . $curauth->ID . "\' AND post_type = \'user_video\' AND post_status = \'publish\'");
?>

SO网友:Александр Daskel

https://codex.wordpress.org/Function_Reference/count_user_posts

<?php $user_post_count = count_user_posts( $userid , $post_type ); ?>
结束

相关推荐

County Finder form/plugin?

我正在为客户开发一个WP站点,需要为我们的州(VT)建立一个“县查找器”。用户将在字段中键入城镇名称(或从下拉菜单中选择城镇),按下提交按钮,系统将弹出城镇所在的县的名称。理想情况下,结果是在页面内交付的,不需要加载新页面,但这不是必需的。我不希望找到预先制定的解决方案。。。我必须手动输入城镇和县当然。。。但我甚至不知道在这种情况下应该寻找什么。感谢您的任何建议。谢谢