使自定义字段的SELECT WHERE查询对每个用户ID都是唯一的



我正在使用Wordpress的MemberMouse来处理重复出现的订阅,我需要添加一个成员目录(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>';

这种方法很有效,它列出了成员的姓名和电子邮件,但当我从自定义字段中提取数据时,它会显示数据库中所有用户的第一个值,而不是每个用户在该字段中的唯一值。如何让它分别检查每个用户ID并获得该用户的自定义值?

我为每个人添加了大约8个"SELECT"查询。

谢谢

您总是使用获取相同的数据

$is_in_database = $wpdb->get_var( "SELECT value FROM mm_custom_field_data WHERE custom_field_id = '1' " );

如果要根据显示的用户返回自定义字段数据,则需要执行按用户ID筛选的SELECT。像这样的东西应该会起作用:

$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。为了安全起见,你应该检查一下。

最新更新