向用户显示最近查看的帖子列表

时间:2012-08-28 作者:Pollux Khafra

我的网站上有很多视频帖子,我希望向用户显示他们最近查看的帖子列表。我猜最好的方法是在他们访问帖子时,将帖子id添加到他们的usermeta中的一个数组中,但我想知道如何才能做到这一点,并且仍然能够向他们显示他们查看帖子的时间顺序。我还想裁剪数组中的帖子数量,保持在20篇左右,这样数组就不会失控。有什么想法吗?

1 个回复
SO网友:Upeksha

此插件可能满足您的要求。

http://wordpress.org/extend/plugins/recently-viewed-posts

用法

get_recently_viewed_posts( $max_shown = 10 ) 返回li的字符串。recently_viewed_posts( $max_shown = 10 ) 打印div

如果您有兴趣学习如何自己开发此功能,请下载插件并查看源文件。WordPress是开源的!

更新:

上述插件无法工作。以下方法将有助于设置最近查看的视频ID。

<?php        
/*
 * Plugin Name: WPSE_63266_Recently_Viewed
 */
function wpse_63266_update_recently_viewed(){

    /**
     *  If is admin or isn\'t single, then return.
     *  To get only singular video posts use; if(!is_singular(\'videos\')) return;
     */
    if(is_admin() || !is_single()) return;

    global $post;

    // Get the current post id.
    $current_post_id = get_the_ID();

    if(is_user_logged_in()){

        // Store recently viewed post ids in user meta.
        $recenty_viewed = get_user_meta(get_current_user_id(), \'recently_viewed\', true);
        if( \'\' == $recenty_viewed ){
            $recenty_viewed = array();            
        }

        // Prepend id to the beginning of recently viewed id array.(http://php.net/manual/en/function.array-unshift.php)
        array_unshift($recenty_viewed, $current_post_id);        

        // Keep the recently viewed items at 5. (http://www.php.net/manual/en/function.array-slice.php)
        $recenty_viewed = array_slice($recenty_viewed, 0, 5); // Extract a slice of the array

        // Update the user meta with new value.
        update_user_meta(get_current_user_id(), \'recently_viewed\', $recenty_viewed);

    } else {

    /**
     * For non-logged in users you can use the same procedure as above
     * using get_option() and update_option()
     */

    }
}
add_action(\'wp_footer\', \'wpse_63266_update_recently_viewed\');

function wpse_63266_show_recently_viewed(){

    $recenty_viewed = get_user_meta(get_current_user_id(), \'recently_viewed\', true);
    echo \'<pre>\'; print_r($recenty_viewed); echo \'</pre>\';
}
add_action(\'wpse_63266_recently_viewed\', \'wpse_63266_show_recently_viewed\');
?>
do action() 在模板中查看在浏览帖子时数组值(视频ID)的更改。

do_action(\'wpse_63266_recently_viewed\');

结束

相关推荐

POSTS_NAV_LINK()在index.php上不工作

我对posts_nav_link() 函数的索引。php。它可以工作,但不显示旧帖子。当有人点击“下一页”链接时,第一页上的相同帖子正在加载。这是我正在使用的代码:<?php if ( is_home ()) {$myquery = new wp_query(\'cat=-41\');}?> <?php global $wp_query; $temp_wp_query = $wp_query; $wp_query = null;&