Created
July 13, 2016 17:29
-
-
Save carmolim/9b1950be2499d1be950d8ffae51719e7 to your computer and use it in GitHub Desktop.
Funções utilizadas para retornar as informações de Cidade e Bairro quando essa localização está armazenada em uma taxonomia com a seguinte hierarquia: Estado - Cidade -Bairro - Cidade - Cidade - Cidade -Bairro
Estado
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Função para retornar a Cidade do empreendimento | |
| function get_cidade(){ | |
| global $post; | |
| $taxonomy = 'localizacao'; | |
| $estados; | |
| $cidade = []; | |
| $bairro; | |
| // busca termos que não tem parents, esses são os estados | |
| $estados = get_terms( $taxonomy, array( 'parent' => 0 ) ); | |
| // puxa todos os termos desse post | |
| $terms = wp_get_post_terms($post->ID, $taxonomy); | |
| // percorre todos os termos desse post | |
| foreach ($terms as $term) | |
| { | |
| // percorre todos os estados (termos que não tem parents) | |
| foreach ($estados as $estado) | |
| { | |
| // verifica se o termo tem um parent listado como estado | |
| if ( $term->parent == $estado->term_id ) | |
| { | |
| // se tiver adiciona à lista de cidades | |
| array_push( $cidade, $term->name ); | |
| } | |
| } | |
| } | |
| // se a contagem retornar nulo é porque não foi adicionado nenhum item ao array... | |
| if ( count($cidade) == null ) { | |
| return 'nenhuma cidade cadastrada'; | |
| } | |
| // se a contagem retornar mais do que uma cidade... | |
| elseif (count($cidade) > 1) { | |
| return 'mais de uma cidade cadastrada'; | |
| } | |
| // apenas uma cidade cadastrada | |
| else { | |
| return $cidade[0]; | |
| } | |
| } | |
| //TODO: Função para retornar o Bairro do empreendimento | |
| function get_bairro(){ | |
| /* | |
| bairro é um termo que tem como parent uma cidade | |
| também é um termo que não tem childs mas tem parent que é uma cidade | |
| */ | |
| global $post; | |
| $taxonomy = 'localizacao'; | |
| $estados; | |
| $cidades = []; | |
| $bairros = []; | |
| // busca termos que não tem parents, esses são os estados | |
| $estados = get_terms( $taxonomy, array( 'parent' => 0 ) ); | |
| // percorre todos os estados | |
| foreach ($estados as $estado) { | |
| // puxa todos os termos filhos do estado | |
| $estado_childs = get_term_children( $estado->term_id, $taxonomy ); | |
| // percorre todos os termos filhos | |
| foreach ($estado_childs as $estado_child ) { | |
| // puxa o objeto completo do termo | |
| $child = get_term( $estado_child, $taxonomy ); | |
| // compara o parent desse termo com o id do estado para ver se é uma cidade | |
| //(tem um estado como parent) | |
| if ($child->parent == $estado->term_id ) { | |
| array_push($cidades, $child); | |
| } | |
| } | |
| } | |
| // puxa todos os termos desse post | |
| $terms = wp_get_post_terms($post->ID, $taxonomy); | |
| foreach ( $terms as $term ) { | |
| foreach ( $cidades as $cidade ) { | |
| // verifica se o termo tem um parent listado como estado | |
| if ( $term->parent == $cidade->term_id ) | |
| { | |
| // se tiver adiciona à lista de cidades | |
| array_push( $bairros, $term->name ); | |
| } | |
| } | |
| } | |
| // se a contagem retornar nulo é porque não foi adicionado nenhum item ao array... | |
| if ( count($bairros) == null ) { | |
| return 'nenhum bairro cadastrado'; | |
| } | |
| // se a contagem retornar mais do que um bairro... | |
| elseif (count($bairros) > 1) { | |
| return 'mais de um bairro cadastrado'; | |
| } | |
| // apenas um bairro cadastrad | |
| else { | |
| return $bairros[0]; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment