2017-01-23 11 views
0

ユーザーのリストがあり、そのうちの1人にあなたと一致させようとしているとします。 10種類のリストがあり、好きなものを選択する必要があります。WordPressユーザーのリストを配列の値で並べ替える

セイ:これによってチョコレート、セーリング、ランニング、サイクリング、ネットフリックス、等...

あなたがチェックチェックボックス、それは、配列、またはデータベース内の文字列としてそれを保存する(私はを柔軟にしていますいずれか)。

だから私は今あなたのようなチェックボックスを最も多くチェックしているユーザーリストを注文する必要があります。

私が「チョコレートをセービングしているなら、&が走っている」と誰かがちょうど「チョコレート」を持っていたなら、私が選んだのと全く同じ3人だった人よりもリストの方がずっと下になります。運と

$query->query_orderby = 'ORDER BY FIND_IN_SET("chocolate", wp_usermeta.meta_value) > 0 ASC'; 

...しかし:pre_user_queryアクションフックを使用してWP_User_Queryをハックしようとして

は、私は次の行を持っています。

babud_likesと呼ばれる1人のユーザーmeta_keyがあり、配列はそのキーのmeta_valueに格納されています。

答えて

1

おそらく、データをバイナリ文字列として保存できますか?たとえば、Chocolate、Sweets、Candy、Footballというカテゴリがある場合、これらをそれぞれ文字列内の既知の位置にある1つのビットとして表現します。例えば、構造(チョコレート、お菓子、キャンディ、サッカー)を使用して、チョコレート、キャンディ、私たちは書くことができサッカーを好きな人のために:

1011 

やチョコレート、お菓子と私たちは

を書くことができサッカーを好きな人のための

1101 

単純なSQLクエリ(SELECT id, likes FROM users WHERE id=1 OR id=2)を書いているとします。次に、2つのlikes値を取得し、ビット単位のANDを実行して、文字列の各ビットを比較し、両方のビットが一致する場合は1を返します。だから、私たちの2人のサンプルユーザーのために、私たちはやります。私たちは推測することができ、結果から

$result = 1011 & 1101; 
// Outputs '1001' 

そのため、第一の位置を示すチョコレートで1、そしてサッカーを示す第四位置に1があるという事実にチョコレートやサッカーなどの両方の人々。

これをWordpressに統合するという点では、私はユーザーのためにcreating an all new tableを考えています。あなたは最終的にデフォルトのWordpressユーザーテーブルでこれを行うことに問題が発生します。

関連する問題