0

私はこれを達成する方法をしばらく探していましたが、これまでのところ運がありません.

a:2:{s:15:"s2member_level2";b:1;s:26:"access_s2member_ccap_one_m";b:1;}

そして、このメタ値はユーザーごとに異なります。私がする必要があるのは、s2member_level2それに含まれるすべての値を取得することです。これが私が出したものです:

$wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_capabilities' AND meta_value = 's2member_level2' ");

本当にデータベースから直接取得する必要があるため、wordpress の機能は使用できません

何か案は?前もって感謝します。

4

1 に答える 1

0

基本的にクエリの外側でフィルタリングを行う、試すことができる回避策を次に示します。

1) wp_usermeta からすべてのペア user_id,meta_value を取得します

 select user_id,meta_value from wp_usermeta where meta_key="wp_capabilities

2) 結果配列内で、「s2member_level2」メタ値を検索し、対応する user_id を取得できます。

3) 必要なすべての user_id を取得したら、各 "wp_capabilities" 値を取得してシリアル化を解除するだけです。

 select meta_value from wp_usermeta where meta_key="wp_capabilities" AND user_id="..."

unserialize 関数を見てみましょう: http://php.net/manual/en/function.unserialize.php

于 2013-10-02T10:20:44.503 に答える