BuddyPress: Como obter informações de usuários filtrados por alguns dados de perfil x? [fechadas]

2

Eu quero a lista de usuários com seus IDs de e-mail, filtrados por alguns dados de perfil x.

Por exemplo, desejo enviar um e-mail para os usuários que marcaram uma caixa de seleção no perfil deles.

Como posso obter as informações dos usuários filtrados pelos dados do perfil x?

    
por Debiprasad 29.04.2013 / 17:20

3 respostas

7

Você desejará usar a classe $wpdb para executar uma consulta para usuários com um determinado campo de perfil x valor.

Eu não sou especialista em MySQL, então alguém provavelmente tem uma maneira melhor de escrever essa consulta (se você fizer isso, por favor, compartilhe-a e atualizarei meu código), mas aqui está uma abordagem.

Essa abordagem pressupõe que você saiba o ID do campo do perfil BuddyPress no qual deseja executar o relatório. Caso contrário, você pode alterar a consulta para verificar a tabela [prefix]_bp_xprofile_fields de um campo específico e usá-la. ID para o resto da consulta.

Essa abordagem também pressupõe que você esteja procurando o endereço de e-mail associado às contas do WordPress dos usuários e não algum outro campo de e-mail que você tenha definido no BuddyPress, se você estiver procurando por um no BuddyPress, você precisará executar um consulta um pouco mais complicada porque a tabela [prefix]_bp_xprofile_data terá o valor que você deseja verificar e o valor que deseja retornar no campo value na tabela.

//create a simple function that will retrieve your desired results
function wpse97684_get_desired_users($field_id, $field_val) {
    //$field_id: (int) this is the ID of the field you'd like to check against
    //$field_val: (str) this is the value you want those users to have in the field

    global $wpdb;
    $bp_table = $wpdb->prefix . 'bp_xprofile_data'; 

    $query = $wpdb->prepare(
        "SELECT U.user_email " .
        "FROM $bp_table B, $wpdb->users U " .
        "WHERE B.user_id = U.ID " .
        "AND B.field_id = %d " .
        "AND B.value = %s"
       , $field_id
       , $field_val
    );

    $get_desired = $wpdb->get_results($query);

    if(count($get_desired)) {
        return $get_desired;
    } else {
        return false;
    }
}

//to call this function, just pass the desired field ID and the desired value
wpse97684_get_desired_users(4, 'Yes'); //example

Agora, não sei ao certo como você usará esses dados ou onde implementá-los, então deixei no formato de objeto bruto que a classe $wpdb retorna.

Você provavelmente deseja colocar isso em um plug-in e formatar o valor retornado em um arquivo CSV ou algo assim, se você planeja alimentá-lo em um sistema de campanha de e-mail (também é provável que você queira verificar a tabela usermeta para os campos de primeiro e último nome, porque a maioria dos sistemas de e-mail com os quais eu trabalhei exige esses também.

Mas isso deve fazer você ir na direção certa.

    
por Eric Allen 03.05.2013 / 20:14
1

De acordo com o loop xprofile buddypress você pode consultar todos os dados do perfil do usuário com

<?php if ( bp_group_has_profile( 'user_id=10' ) ) : ?>

E, em seguida, no loop, você pode procurar por dados de perfil específicos e fazer o que quiser, algo como:

         <?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?>

              <?php if ( bp_field_has_data() ) : ?>

                <?php if (bp_the_profile_field_name() == 'yourCheckboxFieldId') && bp_the_profile_field_value() == 'checked'){
//SEND EMAIL!
    }

     ?>


              <?php endif; ?>

            <?php endwhile; ?>

Talvez isso possa ajudar!

    
por Magico 08.05.2013 / 17:16
0

quando eu crio um grupo no buddypress, pelo nome do grupo (kanpur) seleciono automaticamente os membros do nome do grupo a partir dos dados do xprofile. isto é, selecione os membros do kanpur a partir dos dados do xprofile automaticamente após a criação do grupo.

    
por user44067 18.12.2013 / 15:38

Tags