WordPress – listar usuários com um determinado perfil

Tenho quase certeza que essa não é a melhor forma (sem usar algum plugin) para listar todos os usuários cadastrados no seu blog/site com o WordPress de um determinado perfil, mas no caso em que a performance não é gargalo, não vi problemas:

  • faça um select na tabela de usuários, retornando todos os ids
  • percorra a lista de ids, retornando cada usuário relativo a esse id
  • faz um if para checar o user_level. É ele que define o perfil do usuário

O código seria:

<?php
            $aUsersID = $wpdb->get_col( $wpdb->prepare("SELECT $wpdb->users.ID FROM $wpdb->users ORDER BY %s ASC", ""));
            foreach ( $aUsersID as $iUserID ) :
                $user = get_userdata( $iUserID );
                if($user->user_level==2) { //2 é o user_level para contribuidor
                    //faz o que for necessário com o objeto $user
                }
            endforeach;
?>


 

Pelo que pude ver da estrutura da base do WordPress, que eu ainda estou conhecendo, há uma tabela wp_users que tem os usuários e uma outra, wp_usermeta, de metadados. Não entendi porque user_level não faz parte da wp_users pois está ligado diretamente ao usuário (será que nas primeiras versões não existia esse campo e depois criaram como um metadado?), mas certamente um inner join poderia resolver mais elegantemente essa questão.

Validação de CPF por javascript

Depois de testar várias funções, encontrei uma – na verdade, encontraram e me encaminharam – que parece funcionar corretamente, pois o que mais acontecia era funcionar com uns, e com outros não, aí trocava a função e parava de funcionar com alguns mas com outros começava a rolar.

function ValidarCPF(Objcpf){
    var cpf = Objcpf.value;
    exp = /.|-/g
    cpf = cpf.toString().replace( exp, "" );
    var digitoDigitado = eval(cpf.charAt(9)+cpf.charAt(10));
    var soma1=0, soma2=0;
    var vlr =11;
    for(i=0;i<9;i++){
        soma1+=eval(cpf.charAt(i)*(vlr-1));
        soma2+=eval(cpf.charAt(i)*vlr);
        vlr–;
    }   
    soma1 = (((soma1*10)%11)==10 ? 0:((soma1*10)%11));
    soma2 = (((soma2+(2*soma1))*10)%11);
   
    if(cpf == "11111111111" || cpf == "22222222222" || cpf ==
"33333333333" || cpf == "44444444444" || cpf == "55555555555" || cpf ==
"66666666666" || cpf == "77777777777" || cpf == "88888888888" || cpf ==
"99999999999" || cpf == "00000000000" ){
        var digitoGerado = null;
    }else{
        var digitoGerado = (soma1*10) + soma2;
    }

    if(digitoGerado != digitoDigitado){
       return false;
    }
    return true;
}

Menu por ano e mês no WordPress

Mexendo no template de um blog do WordPress, precisei inserir aquele menu que tem os anos e os mêses desses anos para navegacão.

O código é simples:

<ul>
<?php
/**/
$years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = "publish" AND post_type = "post" ORDER BY post_date DESC");
foreach($years as $year) :
?>
	<li><a href="<?php echo get_year_link($year); ?> "><?php echo $year; ?></a>
		<ul>
		<?	$months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE post_status = "publish" AND post_type = "post" AND YEAR(post_date) = "".$year."" ORDER BY post_date DESC");
			foreach($months as $month) :
			?>
			<li><a href="<?php echo get_month_link($year, $month); ?>"><?php echo date( "F", mktime(0, 0, 0, $month) );?></a></li>
			<?php endforeach;?>
		</ul>
	</li>
<?php endforeach; ?>
</ul>

Com isso, será exibido um menu mais ou menos assim

2009

  • Maio
  • Abril
  • Março
  • Fevereiro
  • Janeiro

2008

  • Dezembro
  • Novembro