Php 能够';比如';WordPress中的博客文章:这类功能需要自定义数据库表吗?

Php 能够';比如';WordPress中的博客文章:这类功能需要自定义数据库表吗?,php,mysql,database,wordpress,database-design,Php,Mysql,Database,Wordpress,Database Design,我将在我的WordPress网站上建立“喜欢博客文章”的功能 这个想法是在每一篇博客文章上加一个按钮,这样用户就可以“喜欢”它。我计划设置一个自定义页面,显示当前登录用户的“喜欢”帖子列表 我的问题:此功能是否需要新的数据库表?或者我应该同时使用user和post-meta来实现这一点?回答时请记住可伸缩性。我需要确保该功能可以处理1000个用户和帖子。使用 这就完成了插件中所需的一切:) 如果你想自己做的话。。。如果您想将这些喜好与用户或IP关联起来,我会使用一个额外的表。如果你只是想要一个数

我将在我的WordPress网站上建立“喜欢博客文章”的功能

这个想法是在每一篇博客文章上加一个按钮,这样用户就可以“喜欢”它。我计划设置一个自定义页面,显示当前登录用户的“喜欢”帖子列表

我的问题:此功能是否需要新的数据库表?或者我应该同时使用user和post-meta来实现这一点?回答时请记住可伸缩性。我需要确保该功能可以处理1000个用户和帖子。

使用 这就完成了插件中所需的一切:)


如果你想自己做的话。。。如果您想将这些喜好与用户或IP关联起来,我会使用一个额外的表。如果你只是想要一个数字,那么我会把它作为文章的元数据,每次+1。希望这能回答您的问题。

如果您使用一张额外的桌子,那么获得喜欢的人数会困难得多,但另一方面,设置喜欢它的人会容易得多。我仍然建议使用一张额外的桌子。

我会有另一张桌子:

 likes
    post_id   user_id
    5         2873  
    19        238
    223       98
    5         15
post_id是likes表和用户id的外键。 通过这种方式,您可以跟踪用户喜欢哪些帖子,并且用户可以喜欢多个帖子

然后,您可以使用一个好的查询来返回每个帖子有多少个喜欢

SELECT user_id,COUNT(*) as count FROM likes GROUP BY post_id ORDER BY count DESC;
将返回如下内容:

post_id   count
5         2
19        1
223       1
我想,不要引用我的sql!但这是总的想法

编辑: 只要重新阅读您的问题,您就可以轻松地使用GROUP BY user_id获得一个用户喜欢的帖子列表


)()玩得开心

谢谢你的链接,但我需要自己编写一些代码,因为我正在将它与我网站上其他地方的功能集成。我已经为你修改了答案。我计划将用户与他们喜欢的内容联系起来。看看你推荐的ZillaLikes插件,我注意到它没有把用户和他们的喜好联系起来。因此,它只是使用post meta对类似计数进行相加或相减。如果我沿着帖子和用户元的路线走下去——在1000个用户喜欢1000个帖子之后,会不会有任何性能问题?我可以看到元值字段变得相当重。使用自定义表会提高性能吗?Nah 1000在很多方面都不重要。我只需要一个带有userID的表,PostID确保两个条目一起使其唯一。然后,对一个posted进行相同的求和。理论上,你可以在一张桌子上用这种方式做数百万。这对于SQL计算来说也是非常快速/容易的。从那以后,你可以添加资源,然后在有问题的时候缓存,而对于1000,你真的不应该这么做。我的意思是,如果它变大,我需要它来扩展。但是,是的,我认为这张桌子是正确的选择!谢谢你。只是想知道这种方法比使用post meta和user meta表有什么优势?没有,这正是我要做的。我正在考虑使用自定义表,但需要理解为什么这样做会更好。每种方法都必须有利弊。我不是在问如何设置自定义表,而是问为什么。有什么好处?优点是什么,缺点是什么等等:你自己编码,你知道发生了什么。很好,如果这是一个小项目,您可以完全控制和灵活地使用功能(我发现wordpress是有限的和臃肿的),您可以轻松地使用数据派生出新功能,“最喜欢的”最近喜欢的“x用户喜欢的”等。缺点:与wordpress不一致,可能不清楚在这个项目上工作的其他程序员的情况。根据您当前的配置,可能很难实现。