想象一下,我们有一个用户列表,我们试图将您与其中一个匹配。你有10个东西的清单,你必须选择你喜欢的东西。
说:巧克力,帆船,跑步,骑自行车,NetFlix等......
根据您检查的复选框,它会将其作为数组或字符串存储在数据库中(我对其中的任何一个都很灵活。)
所以我现在需要按谁勾选最类似你的复选框来订购用户列表。
简单地说,如果我选择"巧克力,帆船&运行"而且有人刚刚吃了#34;巧克力"然后他们会比那些我选择的完全相同的人更进一步。
在尝试使用pre_user_query
操作挂钩破解WP_User_Query时,我有以下行:
$query->query_orderby = 'ORDER BY FIND_IN_SET("chocolate", wp_usermeta.meta_value) > 0 ASC';
......但没有运气。
我有一个名为meta_key
的用户babud_likes
,该数组存储在该密钥的meta_value中。
答案 0 :(得分:1)
也许您可以将数据存储为二进制字符串?例如,如果我们有类别巧克力,糖果,糖果,足球我们会将这些中的每一个表示为字符串中已知位置的单个位。例如,对于喜欢巧克力,糖果和足球的人,我们可以使用结构(巧克力,糖果,糖果,足球)来写作:
1011
或者喜欢巧克力,糖果和足球的人我们可以写
1101
假设我们编写了一个简单的SQL查询(SELECT id, likes FROM users WHERE id=1 OR id=2
)。然后,我们可以得到两个likes
值并按位AND,它比较字符串中的每个位,如果两个位匹配则返回1。因此,对于我们的两个样本用户,我们会这样做;
$result = 1011 & 1101;
// Outputs '1001'
从结果中我们可以推断出两个人都喜欢巧克力和足球,因为第一个位置的1表示巧克力,而第四个位置的1表示足球。
在将其集成到Wordpress中我会考虑用户creating an all new table - 最终只会使用默认的Wordpress用户表遇到问题。