实施最受欢迎的邮寄制度的最有效方式是什么?

时间:2015-01-01 作者:Gixty

我将实现一个收藏夹帖子系统,这样用户可以保存他们最喜欢的帖子供以后阅读。

考虑到成千上万的用户可能会使用此功能,我想知道什么是最好的方法。用户将能够在自定义页面中看到他们最喜欢的帖子,该页面将显示他们。

我已经想到了3种不同的可行方法,我想知道哪一种是性能最好的。

1.-将所有用户ID保存为Posteta中名为favorites的数组。

2.-制作一个名为收藏夹的自定义帖子类型。

3.-创建一个新的数据库表“wp\\u收藏夹”,其中存储帖子id、用户id和创建关系的日期。

那么,这三个选项中,哪一个是最好的(正如我所说的,性能方面)?如果有的话,每种方法的利弊是什么?如果有更好的方法,请告诉我。

3 个回复
SO网友:fuxia

使用自定义表。将其创建为网络表,并存储站点ID,这样您就可以对整个网络使用一个表。

row_id | site_id | post_id | user_id
在当前的核心表格中,没有类似的表格。避免序列化数据,因为该格式是特定于PHP的,所以您无法用任何其他语言(包括SQL)读取其数据,并且按任何值排序或搜索都很尴尬。

您现在必须跟踪网站、用户和帖子,以便在删除其中一个对象时删除匹配的条目。

SO网友:Andy

UPDATE: 我没有看到你的问题中关于用户能够看到收藏夹页面的部分。基于这一点和Stephens的评论,我认为使用update_user_meta()get_user_meta() 存储post ID将是一个更好的选择。这样,使用WP_User_Query

ORIGINAL ANSWER:将用户ID另存为Posteta表中的数组。update_post_meta()get_post_meta() 甚至可以为您处理序列化/取消序列化数组。

在提出编程问题的解决方案时,性能不应该总是决定因素。性能很重要,但可维护、可读和可伸缩的代码也很重要。如果你沿着db table专用道路slight 性能提高然后您必须管理表的创建以及所有自定义数据插入和检索查询

创建一个新的自定义post类型来存储来自不同post类型的post元数据是没有意义的,它会为另一个post对象上的一段数据带来额外的开销。

在考虑这里涉及的数字时,你应该现实一点,如果你确信成千上万的用户将使用此功能,所有人都喜欢相同的帖子,那么也许一个专用的数据库表是你最好的选择,但我发现这不太可能,这就是为什么我建议使用Posteta

SO网友:Emma Arbogast

Pippin插件的插件用户书签(现已停止使用)有一个组合:*将用户元中的“收藏”帖子存储为序列化数据*将帖子元中的收藏总数存储为整数

这使您可以按收藏夹计数进行排序,这很有用。当人们添加/删除书签时,您只需更改计数。

如果您确实选择了“创建自己的表”的路线,我建议您使用POD,因为它们为您在WordPress中使用自定义表提供了很好的API。

结束

相关推荐

WP_QUERY条件影响POSTS_PER_PAGE计数

我正在尝试创建一个新的WP_Query 显示cat 1中没有缩略图的最后5篇文章。这实际上是可行的:<?php $the_query = new WP_Query( \'cat=1&posts_per_page=5\' ); while ( $the_query->have_posts() ) : $the_query->the_post(); if ( ! has_post_thumbnail() ) { ?> <li