quarta-feira, 11 de abril de 2012

Filtrar produtos por nivel de usuario

O wordpress trabalha com niveis de usuario, que vao de 0 a 10, sendo 0 leitor e 10 administrador
aqui você pode ver esses niveis, peguei do wordpress

Capability Administrator Editor Author Contributor Subscriber
level_10
level_9
level_8
level_7
level_6
level_5
level_4
level_3
level_2
level_1
level_0

User Level to Role Conversion

embora nao seja mais utilizado pelo WP, ainda esta disponivel, e pode ser utilizado de uma forma bem util você consegue pegar qual o nivel do usuario logado através da seguinte função

if (is_user_logged_in()){
  $current_user = wp_get_current_user();
$user_id = $current_user->ID;
$user_info = get_userdata( $user_id); 
$user_level = $user_info->user_level;
$username = $user_info->user_login;
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
  }
para se mexer nesses niveis e criar novas capacidades dentro do blog utilizei o plugin


dentro do arquivo loop-products-cat.php na pasta woocommerce que é copiada para seu tema no momento da instalação, você pode colocar o seguinte codigo

<?php 

global $woocommerce, $woocommerce_loop, $product_category_found; 

$product_category_found = false;

?>

<?php 

foreach ($product_categories as $category) :

if ($category->parent != $product_category_parent) continue;

$product_category_found = true;

$woocommerce_loop['loop']++;
//informações do usuario
if (is_user_logged_in()){
  $current_user = wp_get_current_user();
$user_id = $current_user->ID;
$user_info = get_userdata( $user_id); 
$user_level = $user_info->user_level;
$username = $user_info->user_login;
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
  }
//vejo nivel de usuario e digo se ele pode ou nao ver alguma pagina
$restrito = '';
if($user_level < 3){
//aqui eu digo quais páginas usuários de nível menor que 3 não podem ver através do titulo da categoria
$restrito = array("Materiais de apoio","Impressos","Brindes","Presentes");
}
//se for diferente do array acima aparece caso seja menor que 3 o nível de usuário
if (!in_array($category->name, $restrito)){
?>
<li class="product sub-category <?php if ($woocommerce_loop['loop']%$woocommerce_loop['columns']==0) echo 'last'; if (($woocommerce_loop['loop']-1)%$woocommerce_loop['columns']==0) echo 'first'; ?>">

<?php do_action('woocommerce_before_subcategory', $category); ?>

<a href="<?php echo get_term_link($category->slug, 'product_cat'); ?>">

<?php do_action('woocommerce_before_subcategory_title', $category); ?>

<h3><?php echo $category->name; ?> <?php if ($category->count>0) : ?><mark class="count">(<?php echo $category->count; ?>)</mark><?php endif; ?></h3>

<?php do_action('woocommerce_after_subcategory_title', $category); ?>

</a>

<?php do_action('woocommerce_after_subcategory', $category); ?>

</li><?php
}
endforeach;
?>

dessa forma você coloca dentro do array quais categorias os usuarios que nao tem niveis de permissao podem ver, no meu caso utilizei pq temos franquias e somente elas podem ver algumas paginas e clientes nao.

essa foi mais uma necessidade que tive e essa foi a forma encontrada, pode ser que você encontre outra, se sim, avise para que possamos um ajudar o outro

até a proxima

Um comentário:

  1. Oi Alexandre

    Estamos montando aqui. no Instituto Hélio Teixeira. um site que usa o plugin BuddyPress e estamos precisando contratar alguém para nos ajudar a configurá-lo. Já adiantamos muito, só falta mesmo configurar os fórums.

    Você poderia nos ajudar a fazer isso?

    Fico no aguardo!

    ResponderExcluir