Filtrar produtos por nivel de usuario
Autor: Alexandre Rodrigues | Publicado: 2012-04-11T07:55:00-07:00

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

User Level 0 converts to&nbsp;Subscriber
User Level 1 converts to&nbsp;Contributor
User Level 2 converts to&nbsp;Author
User Level 3 converts to&nbsp;Editor
User Level 4 converts to&nbsp;Editor
User Level 5 converts to&nbsp;Editor
User Level 6 converts to&nbsp;Editor
User Level 7 converts to&nbsp;Editor
User Level 8 converts to&nbsp;Administrator
User Level 9 converts to&nbsp;Administrator
User Level 10 converts to&nbsp;Administrator

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()){

&nbsp;   $current_user  = wp_get_current_user();

   $user_id   = $current_user-&gt;ID;

   $user_info  = get_userdata( $user_id);&nbsp;

   $user_level  = $user_info-&gt;user_level;

   $username  = $user_info-&gt;user_login;

   $first_name  = $user_info-&gt;first_name;

   $last_name  = $user_info-&gt;last_name;

&nbsp; }



para se mexer nesses niveis e criar novas capacidades dentro do blog utilizei o plugin

Role Manager





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




&lt;?php&nbsp;



global $woocommerce, $woocommerce_loop, $product_category_found;&nbsp;



$product_category_found = false;



?&gt;



&lt;?php&nbsp;



foreach ($product_categories as $category) :



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



 $product_category_found = true;



 $woocommerce_loop['loop']++;

 //informações do usuario

 if (is_user_logged_in()){

&nbsp;   $current_user  = wp_get_current_user();

   $user_id   = $current_user-&gt;ID;

   $user_info   = get_userdata( $user_id);&nbsp;

   $user_level  = $user_info-&gt;user_level;

   $username   = $user_info-&gt;user_login;

   $first_name  = $user_info-&gt;first_name;

   $last_name   = $user_info-&gt;last_name;

&nbsp; }

 //vejo nivel de usuario e digo se ele pode ou nao ver alguma pagina

 $restrito = '';

 if($user_level &lt; 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-&gt;name, $restrito)){

 ?&gt;

 &lt;li class="product sub-category &lt;?php if ($woocommerce_loop['loop']%$woocommerce_loop['columns']==0) echo 'last'; if (($woocommerce_loop['loop']-1)%$woocommerce_loop['columns']==0) echo 'first'; ?&gt;"&gt;



  &lt;?php do_action('woocommerce_before_subcategory', $category); ?&gt;



  &lt;a href="&lt;?php echo get_term_link($category-&gt;slug, 'product_cat'); ?&gt;"&gt;



   &lt;?php do_action('woocommerce_before_subcategory_title', $category); ?&gt;



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



   &lt;?php do_action('woocommerce_after_subcategory_title', $category); ?&gt;



  &lt;/a&gt;



  &lt;?php do_action('woocommerce_after_subcategory', $category); ?&gt;



 &lt;/li&gt;&lt;?php

 }

endforeach;

?&gt;




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