Suporte » Desenvolvendo com WordPress » Filtrar categoria e mostrar string com IF, ELSE no functions.php

  • Resolvido dmarchetti

    (@dmarchetti)



    Oi galera, tô precisando de uma ajuda aqui com meu functions.php…

    Preciso mostrar um texto para cada categoria de produto diferente antes da quantidade na parte do produto como mostrado na imagem abaixo:

    Imagem

    No caso se for a categoria “pisos” precisa mostrar o texto “Caixa(s): ” pois os produtos são vendidos em caixas.

    Se for a categoria “rodapés” precisa mostrar “Régua(s): ”, pois os produtos são vendidos em réguas.

    Se for a categoria “lâmpadas” precisa mostrar “Unidade(s): ”, pois as lâmpadas são vendidas em unidades.

    Criei um if, else aqui mas percebo que só está mostrando o else (Unidades:) no site…

    Segue o código abaixo que está no functions.php:

    add_action( 'woocommerce_before_add_to_cart_quantity', 'text_qtd_caixas', 20 );
    
    function text_qtd_caixas() {
    
    		if  (is_product_category( 'pisos-e-revestimentos' )) {
    			echo '<h3>Caixas: </h3>';
    		}
    		elseif (is_product_category( array( 'rodapes' ))) {
    			echo '<h3>Réguas: </h3>';
    		}
    		else {
    			echo '<h3>Unidade(s): </h3>';
    		}
    		
    }

    Tem alguma coisa errada aí que eu não tô sabendo o que é… Acho q não tô conseguindo filtrar as categorias corretamente por isso só tá mostrando o else…

    Tentei pegar as categorias por id também e não consegui…

    WordPress versão 4.9.8 com tema Flatsome (Child) e Woocommerce.

    Alguém ajuda?

    Desde já obrigado!

    • Este tópico foi modificado 1 mês, 2 semanas atrás por  dmarchetti.
Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • @dmarchetti use essa função na verificação das condicionais:

    if ( has_term( array( 'pisos-e-revestimentos' ) ) )

    Ficará dessa forma:

    
    add_action( 'woocommerce_before_add_to_cart_quantity', 'text_qtd_caixas', 20 );
    
    function text_qtd_caixas() {
    
    	if ( has_term( 'pisos-e-revestimentos' ) ) {
    		echo '<h3>Caixas: </h3>';
    	}
    	elseif ( has_term( 'rodapes' ) ) {
    		echo '<h3>Réguas: </h3>';
    	}
    	else {
    		echo '<h3>Unidade(s): </h3>';
    	}
    
    }
    

    Everaldo Matias

    Obrigado pela ajuda @everaldomatias!

    Consegui aqui, o caminho foi esse mesmo!

    Mas só implementando o if ( has_term( array( 'pisos-e-revestimentos' ) ) )
    não funcionou.

    Precisei utilizar o global $product para chamar a variável global e adicionando esses argumentos 'product_cat', $product->get_id() o código funcionou. Segue abaixo o código final:

    add_action( 'woocommerce_before_add_to_cart_quantity', 'text_qtd_caixas', 20 );
    
    function text_qtd_caixas() {
    	global $product;
    
    	if ( has_term( 'piso-vinilico-pvc', 'product_cat', $product->get_id() ) ) {
    		echo '<h3>Caixas: </h3>';
    	}
    	elseif ( has_term( 'rodapes', 'product_cat', $product->get_id() ) ) {
    		echo '<h3>Réguas: </h3>';
    	}
    	else {
    		echo '<h3>Unidade(s): </h3>';
    	}
    }

    Utilizei a ajuda nesse outro tópico também:
    https://wordpress.org/support/topic/category-filter-and-show-string-with-if-else-on-functions-phpi/#post-10839083

    • Esta resposta foi modificada 1 mês, 2 semanas atrás por  dmarchetti.

    @dmarchetti perfeito. Bom que deu certo.
    Por favor, marque esse tópico como “Resolvido”.

Visualizando 3 respostas - 1 até 3 (de um total de 3)
  • Você deve estar logado para responder a este tópico.