【问题标题】:Is it possible to let a wordpress user know which posts they have already read?是否可以让 wordpress 用户知道他们已经阅读了哪些帖子?
【发布时间】:2012-07-09 12:49:20
【问题描述】:

是否存在执行此操作的插件?如果没有,我理论上可以创建一个跟踪此类信息的 mysql 数据库吗?

例如,假设我有一个以用户名作为主键的表 post_views,并且每次用户来时,我都会检查该表中具有帖子 ID 的列是否存在值。

如果是,则执行某些操作...如果不是,则创建列并分配值 1 或其他值。

这样的事情可行吗?对不起,我是一个 mysql 菜鸟。

谢谢!

【问题讨论】:

标签: php mysql database wordpress


【解决方案1】:

嗯,这是可行的,是的。

你可以:

  1. 像每个人对 WP 所做的那样:在他们庞大的存储库中搜索一个插件并安装它。很有可能有些东西可以完全满足您的需要;
  2. 对于已登录的用户:创建一个关系表,比如 users_posts

         id | user_id | post_id
    

    在每个帖子视图中,将用户 ID 和帖子 ID 插入到此表中(如果您愿意,可以添加其他信息,例如阅读帖子的日期)。对该表的查询将告诉您用户打开的所有页面,或者相反,您可以检查该用户是否看到了页面。从你所说的来看,这是一个比你想象的更可行的表模式;

  3. 对于未登录的用户:如果没有可供您使用的用户 ID,您可以使用 cookie:在 cookie 中写入用户信息(IP、UserAgent 等)和帖子 ID;只要 cookie 没有被清除(或过期),您仍然会知道用户看到了什么。为了增加甜头:一旦用户登录,您就可以将此基于 cookie 的信息转换为第 2 点中的方法)。

    好吧,再想一想,cookie 不是必需的,您也可以在这里使用数据库,但是该表不会存储用户 ID,而是其他信息(您可以使用带有添加列的同一个表,或者专门为未登录的用户。我会选择后者)

    但请记住,IP、用户代理和其他此类信息不可靠,并且可能导致问题 - 第一个可以共享被不同的用户,第二个很容易被欺骗。最好的做法是忽略这一点 3) 并始终只跟踪登录用户,这样您就不会遇到问题。

【讨论】:

  • 感谢您的回答!我有点知道这是可行的,但不确定它是否实用,因为我最终会得到一个巨大的数据库。我会面临性能问题吗?另外,我会将阅读的 post_id 输入一列吗?或者我会用 post_id 和一个像 0 或 1 这样的开关变量创建一个新列吗?
  • switch变量的作用是什么?恕我直言,我向您展示的方法更容易。至于性能问题,如果索引正确,mysql 可以轻松处理一百万行,所以我认为这里没什么大不了的,特别是因为如果你觉得表变得太大,你总是可以删除旧的/无用的行跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
相关资源
最近更新 更多