我正在使用MemberMouse for Wordpress处理重复出现的订阅,我需要添加一个成员目录(MemberMouse不提供此功能),该目录向MemberMouse查询信息。 MemberMouse注册表单上的大约十二个字段是自定义字段,文本和下拉菜单的混合以及一个复选框,使用户可以决定是否要显示在目录中。
我的PHP知识是有限的,但是到目前为止,我已经写了一个小测试项目,只是为了确保可以从MemberMouse自定义字段返回结果,并且到目前为止,我已经做到了:
global $wpdb;
$args = array(
'role' => 'paid-member',
'orderby' => 'user_nicename',
'order' => 'DSC'
);
$users = get_users( $args );
echo '<ul>';
foreach ( $users as $user ) {
$is_in_database = $wpdb->get_var( "SELECT value FROM mm_custom_field_data WHERE custom_field_id = '1' " );
echo '<li>' . esc_html( $user->display_name ) . ' [' . esc_html( $user->user_email ) . ']</li>';
echo 'Custom Field Data: '.$is_in_database.' </br></br>';
}
echo '</ul>';
这种工作方式,它列出了成员名称和电子邮件,但是在从自定义字段中提取数据的地方,它显示了所有用户在数据库中的第一个值,而不是每个用户在此字段中的唯一值用户。如何使其分别检查每个USER ID并获取该用户的自定义值?
我要为每个人添加大约8个左右的“ SELECT”查询。
谢谢
答案 0 :(得分:0)
您始终使用以下方式获取相同的数据:
$is_in_database = $wpdb->get_var( "SELECT value FROM mm_custom_field_data WHERE custom_field_id = '1' " );
如果要基于显示的用户返回自定义字段数据,则需要执行SELECT
,并按用户ID进行过滤。这样的事情应该可以解决问题:
$is_in_database = $wpdb->get_var($wpdb->prepare(
"
SELECT value
FROM mm_custom_field_data
WHERE user_id = %d
",
$user->ID
));
我不知道mm_custom_field_data
的表结构,但是我想包含用户ID的列是user_id
。为了安全起见,您应该检查一下。