Skip to content

Instantly share code, notes, and snippets.

@carmolim
Created July 13, 2016 17:29
Show Gist options
  • Select an option

  • Save carmolim/9b1950be2499d1be950d8ffae51719e7 to your computer and use it in GitHub Desktop.

Select an option

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
// 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