Recentemente um cliente teve a necessidade de bloquear algumas informações na loja feita em woocommerce e deixar os dados visíveis apenas para usuários que ele havia concedido acesso através do registro do próprio wordpress (membros cadastrados).
A função abaixo (que deve ser colocada no arquivo functions.php do tema) executa isso com exatidão e você pode escolher quais dados quer esconder/mostrar para os usuários.
add_filter('woocommerce_get_price_html','show_price_logged');
function show_price_logged($price){
if( is_user_logged_in() ){
return $price;
}
}
function remove_add_cart(){
global $product;
if ( !is_user_logged_in() ) {
// removing the purchase buttons
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart' );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
remove_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
remove_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
remove_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
remove_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart');
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_external_add_to_cart', 30 );
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_button_view_cart', 10 );
remove_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_widget_shopping_cart_proceed_to_checkout', 20 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
// Remove price
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price' );
return WooCommerce::instance();
}
}
add_action( 'wp', 'remove_add_cart' );
Helio Richter
Boa noite… Vi seu post e ainda tenho pouco conhecimento em desenvolvimento de sites, gostaria de saer onde coloco essa função? Obrigado
rudalov
Olá Helio. Você precisa colocar esses filtros no arquivo function.php do seu tema!
Renato Prado
Olá Rudalov, tudo bem?
Estou desenvolvendo localhost.
Eu tentei editar o seu script, removendo essas linhas, mas não funcionou:
remove_action( ‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10 );
// Remove price
remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_price’, 10 );
remove_action( ‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’ );
Na verdade eu gostaria de remover apenas o carrinho e o checkout, mas mantendo o preço. Ficaria como uma vitrine eletrônica, com todos produtos cadastrados, porem apenas com o preço e descrição.
Obrigado.
rudalov
Renato, em uma oportunidade que precisei esconder dessa forma eu usei apenas o css (display: none) pro elemento que queria esconder do usuário, foi mais simples assim!