时间:2024-04-04
我最近在开发一个WordPress用户中心,需要获取某个用户发表的文章数量和评论数量。虽然这两个数据使用的情况比较少,但是WordPress没有提供直接获取这些数据的方法,因此需要通过SQL查询来获取这些数据。
function get_user_comments_count($user_id){ global $wpdb; $user_id = (int)$user_id; $sql = "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id='$user_id' AND comment_approved=1"; $count = $wpdb->get_var($sql); return ($count) ? $count-1 : 0; }
function num_of_author_posts($user_id){ global $wpdb; $user_id = (int)$user_id; $sql = "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author='$user_id' AND post_status='publish'"; $count = $wpdb->get_var($sql); return ($count) ? $count : 0; }
另外,WordPress官方也提供了一个函数来直接获取用户发表的文章数量:
<?php $user_post_count = count_user_posts($user_id, $post_type); ?>
由于上面的SQL查询比较复杂,如果每次获取文章数量和评论数量都要运行一下上面的两个SQL查询,会对数据库造成一定的负载影响。为了提升性能,我们可以把这两个数据作为用户自定义字段存入数据库中,每次用户发表文章或评论的时候更新这个用户自定义字段,需要获取时再使用get_user_meta
函数获取这两个数据。
Copyright © 2019-2024 2543.cn