Jump to content
jucamillo

Criar tabela de taxonomia com hierarquia

Recommended Posts

Ola pessoal, tudo bem?

 

Sou nova por aqui mas preciso de uma ajuda importante.

 

Estou desenvolvendo um site no woocommerce e na página "single" do produto preciso criar uma tabela que mostre uma taxonomia, de nome "cultura". A questão é que cada item dessa taxonomia possui filho e neto, ou seja uma hierarquia.

 

Não sou muito boa com php, mas consigo resolver algumas coisas com a ajuda do google sempre que preciso no wordpress. Infelizmente dessa vez não deu tão certo.

 

Eu consegui gerar a tabela exatamente como eu precisava, vcs podem ver pelo link:

http://jucamillo.com.br/projetos/arysta/produto/adage-350-fs/

(desça a página ate a tabela azul com "cultura", "Alvo", "nome cientifico")

 

 

Se vocês analisarem essa página esta puxando milhoes de culturas, porque esta puxando todas as taxonomias cadastradas no woocommerce, mas eu precisava que ela puxasse apenas as taxonomias cadastradas no produto que estou vendo.

 

O codigo que eu criei para puxar tudo como eu queria esta logo abaixo, mas note que eu preciso poder separar o pai, o filho e o neto, de preferencia exatamente como esta no codigo atual, mas com algum tipo de filtro que puxe apenas o que é deste produto em questao. 

 


            $args = array(
                'taxonomy'      => 'cultura',
                'parent'        => 0, // get top level categories
                'orderby'       => 'name',
                'order'         => 'ASC',
                'hierarchical'  => 1,
                'pad_counts'    => 0
            );

            $categories = get_categories( $args );

            foreach ( $categories as $category ){
                echo '<tr><td>'. $category->name . '</td>';

                $sub_args = array(
                    'taxonomy'      => 'cultura',
                    'parent'        => $category->term_id, // get child categories
                    'orderby'       => 'name',
                    'order'         => 'ASC',
                    'hierarchical'  => 1,
                    'pad_counts'    => 0
                );

                $sub_categories = get_categories( $sub_args );


                echo '<td colspan="2"><table border="0" style="border:0;">';

                foreach ( $sub_categories as $sub_category ){

                    echo '<tr><td>'. $sub_category->name . '</td>';


                    $sub_sub_args = array(
                        'taxonomy'      => 'cultura',
                        'parent'        => $sub_category->term_id, // get child categories
                        'orderby'       => 'name',
                        'order'         => 'ASC',
                        'hierarchical'  => 2,
                        'pad_counts'    => 0
                    );

                    $sub_sub_categories = get_categories( $sub_sub_args );

                    echo '<td style="border:0; border-bottom: 1px solid #fff;"><table border="0" style="border:0;">';

                    foreach ( $sub_sub_categories as $sub_category ){

                        echo '<tr><td style="border:0; ">'. $sub_category->name . '</td></tr>';

                    }

                    echo '</table></td>';

                }


                echo '</tr></table></td>';


                echo '</tr>';


            }

 

 

 

 

 

 

eu tentei fazer algo como isso aqui tambem, inserindo o $post, mas nao funciona. 


			$args = array(
			    'taxonomy'      => 'cultura',
			    'parent'        => 0, // get top level categories
			    'orderby'       => 'name',
			    'order'         => 'ASC',
			    'hierarchical'  => 1,
			    'pad_counts'    => 0
			);

			$categories = get_categories( $post, $args );

			foreach ( $categories as $category ){
				echo '<tr><td>'. $category->name . '</td>';

			    $sub_args = array(
			        'taxonomy'      => 'cultura',
			        'parent'        => $category->term_id, // get child categories
			        'orderby'       => 'name',
			        'order'         => 'ASC',
			        'hierarchical'  => 1,
			        'pad_counts'    => 0
			    );

			    $sub_categories = get_categories( $sub_args );


			    echo '<td colspan="2"><table border="0" style="border:0;">';

			    foreach ( $sub_categories as $sub_category ){

			        echo '<tr><td>'. $sub_category->name . '</td>';


			        $sub_sub_args = array(
				        'taxonomy'      => 'cultura',
				        'parent'        => $sub_category->term_id, // get child categories
				        'orderby'       => 'name',
				        'order'         => 'ASC',
				        'hierarchical'  => 2,
				        'pad_counts'    => 0
				    );

				    $sub_sub_categories = get_categories( $sub_sub_args );



			    	echo '<td style="border:0; border-bottom: 1px solid #fff;"><table border="0" style="border:0;">';

				    foreach ( $sub_sub_categories as $sub_category ){

				        echo '<tr><td style="border:0; ">'. $sub_category->name . '</td></tr>';

				    }







					echo '</table></td>';

			    }








				echo '</tr></table></td>';


				echo '</tr>';


			}

 

 

 

 

outra forma que tentei foi usando a funcao get_the_terms , essa funcao desse jeito printa so os termos do produto em questao, mas nao sei como quebrar ela e transformar em algo como a funcao anterior, onde eu pego primeiro o pai, depois os filhos desse pai, e depois o filho do filho, entende?


				$terms = get_the_terms( $post->ID , 'cultura' );

					foreach ( $terms as $term ) {

					echo $term->name;

					};

 

 

 

 

bom, espero que alguém possa me ajudar, por favor!!

 

 

 

Muito obrigada;

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Henrique Augusto Rohloff
      Olá! Sou iniciante e estou treinando para configurar uma página de buscas de produtos em um banco de dados.
      Os produtos já estão sendo encontrados quando a palavra bate com os itens do banco. A conexão com o banco de dados está funcionando corretamente. Porém, quando nada é encontrado, queria que aparecesse uma mensagem "Nenhum resultado, tente novamente." Já tentei com  else de tudo que é jeito mas não aparece corretamente... Qual é o jeito certo?
       
      Segue o código:
       
       
    • By maruoppolo
      Olá, tenho 2 tabelas:
       
      tb_dados: ID - MUSICA
       
      tb_votos: ID - VOTO - RADIO - MUSICA
       
      Preciso fazer uma query que traga as musicas da tb_dados porém ordenando pelo número de votos que ela teve na tb_votos.
       
      Então assim, existem 2 tipos de voto 1 = like e 2 = dislike, cada ver que um usuário vota eu pego qual radio que ele esta ouvindo e salvo no campo radio, o id da musica na tb_dados e salvo no campo musica da tb_votos e coloco o número 1 para like e 2 para dislike no campo voto.
       
      A query precisa contar quantos likes teve na tv_votos filtrando por radio e mostrando os resultados em ordem decrescente as musicas com mais likes.
       
      A ideia é trazer as 10 musicas com mais like de cada radio
       
      Alguma ideia de como fazer?? Estou enroscado nisso a dias.
    • By Chester1
      oi, eu to tentando mexer com servidores agora no PHP e esta dando um erro muito estranho que quando eu procuro em um programa que acha erros de sintaxe ele me diz que o erro esta no </HTML>    se alguem puder me dizer qual foi o erro que eu cometi eu agradeceria
       

       
      <HTML> <HEAD><TITLE>incluindo no banco de dados</TITLE></HEAD> <body> <BODY bgcolor="#d0d0d0"> <center> <h3>Lanchonete coma bem (voltada para o internauta)</h3> <h1>24horas</h1> <?php $login_digitado=$_POST['login']; $senha=$_POST['senha']; $nome=$_POST['nome']; $email=$_POST['email']; $telefone=$_POST['telefone']; $celular=$_POST['celular']; $endereco=$_POST['endereco']; $complemento=$_POST['complemento']; if ($login_digitado == "" || $senha == "" || $nome =="" || $email == "" || $telefone == "" || $endereco == "" || $complemento == "") { echo "existem(m) campos(s) de preenchimento obrigatorio em branco,<BR> infelizmente tera que voltar para preenche-lo(s)."; echo "<BR><a href=\"cadastro.php\">clique aqui para tentar novamente</a>"; } else { { $link=mysql_connect("localhost", "root", "") or die ("<h1>nao foi possivel conectar !!!</h1> ".mysql_error());  
      obs :estou trabalhando com formularios e servidores
         
         
         
         
      ?>
      </BODY>
      </HTML>
    • By DavidPin94
      Boa tarde, estou tentando criar uma validação para saber se o usuário já está cadastrado no meu banco de dados para meu sistema ficar mais organizado, porém quando realizo o teste cadastrando um usuário já cadastrado, o cadastro ocorre sendo que não era para ocorrer
      <?php require_once("conexao.php");?> <?php if (isset($_POST['usuario'])) { $nome = utf8_decode($_POST['usuario']); $senha = utf8_decode($_POST['senha']); $inserir = "INSERT INTO cadastro "; $inserir .= "(usuario, senha) "; $inserir .= "VALUES "; $inserir .= "('$nome', '$senha')"; $query = "SELECT usuario FROM cadastro WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); $query = "SELECT usuario FROM clientes WHERE usuario = '$usuario' LIMIT 1"; $consulta = mysqli_query($conecta, $query); if (mysqli_num_rows($consulta) < 1) { $operacao_inserir = mysqli_query($conecta, $inserir); if (! $operacao_inserir) { die("Erro no banco"); }else header("location: login.php"); }else{ die("Usuário existente!"); } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Cadastrar novo usuário</title> <link rel="stylesheet" type="text/css" href="estilo.css"> </head> <body> <nav> <ul> <li><a href="inicial.php">PÁGINA INICIAL</a></li> <li><a href="quem_somos.php">QUEM SOMOS</a></li> </ul> </nav> <div id="cadastro"> <form method="post" action="cadastro.php"> <label>Digite seu nome de usuário</label> <input type="text" name="usuario" placeholder="Ex: Usuario123" required size="50" minlength="5" maxlength="20" autofocus><br> <label>Digite sua senha</label> <input type="password" name="senha" placeholder="Deve conter mais de 5 caracteres" required size="50" minlength="5" maxlength="20" autofocus><br> <input type="submit" value="Cadastrar" id="enviar" name="enviar"> </form> </div> </body> </html> ,  alguém poderia me ajudar?  Meu código:
    • By asacap1000
      Galera me ajudem por favor, estou pirando kkkkk
       
      Seguinte, tenho um form que realiza o submit via javascrit enviando os dados para uma página php formatada em json.
      Está gravando perfeitamente porém preciso dos dados do retorno, como Link do boleto, e alguns outros resultados para inserir no banco nesse ponto já pesquisei um monte testei de tudo até a página bugar e nada kkkk
       
      o Script que utilizo para o envio é esse:
       
      <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> $("#frmBoleto").submit(function(){ $.ajax({ type: "POST", url: "https://www.sitedaloja.com.br/action/boleto_bradesco/gerando_boleto.php", data: $(this).serializeArray(), }).done(function( msg ) { }); return false; }); </script> Como fazer para capturar os dados  da resposta do json?  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.