用户跟踪自定义帖子类型“Lesson”。数据库查询和性能

时间:2014-08-10 作者:user57391

因此,我编写了这个小代码片段,将post id和当前用户id一起添加到用户元表中。我将使用它向用户显示已查看的“课程”帖子。

我唯一担心的是,Wordpress似乎必须遍历整个表才能检索这些帖子。如果有成千上万的用户(我很乐观),他们都平均看10到20节课呢?这会导致性能问题吗?我对数据库的了解还不够。有没有更好的方法来解决我错过的问题?

<?php
if ( is_user_logged_in() ) {
    $user_ID = get_current_user_id();
    $post_ID = get_the_ID();
    add_user_meta( $user_ID, \'viewed_lesson_tracking\', $post_ID ); // tracks that user has viewed the current post
}
?>
谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Saurabh Shukla 整理而成

由于每个用户将有多个帖子(课程),因此您的代码更像这样:

<?php
if ( is_user_logged_in() ) {
    $user_ID = get_current_user_id();
    $post_ID = get_the_ID();
    $viewed = get_user_meta( $user_ID, \'viewed_lesson_tracking\', true);
    if(empty($viewed)){
        $viewed = array();
    }
    $viewed[] = $post_ID
    add_user_meta( $user_ID, \'viewed_lesson_tracking\', $viewed ); // tracks that user has viewed the current post
}
?>
因此,当显示所有已查看课程(帖子)的列表时,您所要做的就是使用WP\\u查询的post\\u in参数。

WordPress不会在整个表中循环。MySQL查询不是这样工作的。在任何给定的时间,每个用户只会有一个查询。你不必担心性能。此外,WordPress会缓存所有查询,如果你在上面有一个缓存插件,你甚至不需要考虑它。

结束

相关推荐

Accessing two databases

我的服务器上有两个数据库,我想知道有没有办法从wordpress访问这两个数据库?我的想法是将第二组凭据添加到wp-config.php.