Ocultar preços de produtos e botões Adicionar ao carrinho, mas não variações para usuários não registrados no WooCommerce

Rafaël De Jongh

Na minha loja WooCommerce, quero ocultar os preços até que o cliente faça login. O código a seguir funciona e faz exatamente isso:

add_action('init','hide_price');
function hide_price(){
    if(!is_user_logged_in()){
        remove_action('woocommerce_after_shop_loop_item','woocommerce_template_loop_add_to_cart',10);
        remove_action('woocommerce_single_product_summary','woocommerce_template_single_add_to_cart',30);
        remove_action('woocommerce_single_product_summary','woocommerce_template_single_price',10);
        remove_action('woocommerce_after_shop_loop_item_title','woocommerce_template_loop_price',10);
        add_action('woocommerce_single_product_summary','print_login_to_see',31);
        add_action('woocommerce_after_shop_loop_item','print_login_to_see',11);
    }
}

function print_login_to_see(){
    echo '<a href="' . get_permalink(woocommerce_get_page_id('myaccount')) . '">' . __('Login to see prices','theme_name') . '</a>';
}

No entanto, isso também remove a lista suspensa de variações e eu gostaria de mantê-la.

Existe alguma maneira direta de manter o menu suspenso de variação, mas ainda ocultar os preços até que o cliente efetue login?

obrigado

LoicTheAztec

Atualizada:

Você precisará separar as páginas da loja e dos arquivos das páginas de um único produto. Nas páginas de um único produto, você direcionará produtos variáveis ​​para adicionar e remover as funções conectadas específicas.

A última coisa, em sua função print_login_to_see(), woocommerce_get_page_id()está obsoleta e foi substituída por wc_get_page_id()...

Portanto, seu código olhará para isto:

// For product archives pages
add_action( 'init', 'hide_product_archives_prices' );
function hide_product_archives_prices(){
    if( is_user_logged_in() ) return;

    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10) ;
    add_action ( 'woocommerce_after_shop_loop_item', 'print_login_to_see', 10 );
}

//
add_action( 'woocommerce_single_product_summary', 'hide_single_product_prices', 1 );
function hide_single_product_prices(){
    if( is_user_logged_in() ) return;

    global $product;

    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

    if( ! $product->is_type('variable') ){
        remove_action('woocommerce_single_product_summary','woocommerce_template_single_add_to_cart', 30 );
        add_action( 'woocommerce_single_product_summary','print_login_to_see', 30 );
    } else {
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10);
        remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
        add_action( 'woocommerce_single_variation', 'print_login_to_see', 20 );
    }
}

// Display a my account link 
function print_login_to_see(){
    echo '<a href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '" class="button">' . __('Login to see prices','theme_name') . '</a>';
}

O código vai no arquivo function.php do seu tema filho ativo (ou tema) ou também em qualquer arquivo de plugin.

Este código foi testado no WooCommerce 3+ e funciona.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo