Skip to content

Instantly share code, notes, and snippets.

@ricardobrg
Created May 4, 2016 01:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ricardobrg/9daa0a2a3e01e3f3e03f8c35a9ba45e2 to your computer and use it in GitHub Desktop.
Save ricardobrg/9daa0a2a3e01e3f3e03f8c35a9ba45e2 to your computer and use it in GitHub Desktop.
Estados e cidades brasileiras populados em uma taxonomia do wordpress.
<?php
// É aconselhável criar um backup do banco antes
// crie a taxonomia cidade na functions do tema
add_action('init', 'register_locations');
function register_locations() {
register_taxonomy( 'cidade',array (
0 => 'locais',
),
array( 'hierarchical' => true,
'label' => 'Cidades',
'show_ui' => true,
'query_var' => true,
'show_admin_column' => true,
'labels' => array (
'search_items' => 'Cidade',
'popular_items' => 'Cidades populares',
'all_items' => 'Todos as cidades',
'edit_item' => 'Editar item',
'update_item' => 'Atualizar cidade',
'add_new_item' => 'Adicionar cidade'
)
)
);
}
// coloque essa função na functions do seu tema, coloque a chamada em alguma página e acesse pelo browser uma única vez
function create_location_terms() {
$feed = json_decode(file_get_contents('brazil-cities-states.json')); //este arquivo você pode pegar aqui: https://gist.github.com/brunomarks/8851491
foreach ($feed->estados as $key => $estado) {
$sigla = $estado->sigla;
$estado_term = wp_insert_term($estado->sigla, 'cidade');
$current_term_id = $estado_term['term_id'];
foreach ($estado->cidades as $key => $cidade) {
wp_insert_term( $cidade, 'cidade', array( 'parent'=> $current_term_id ) );
}
}
}
// Verifique a taxonomia, deverá conter todas as cidades dentro dos respectivos estados
//------------------------------------------------------------------------------------------------------------------------
// Outra forma usando plugin JSON API
// Crie um controller na pasta controllers do plugin (locations.php)
// Acesse a URL uma única vez clicando em get_locations, no painel do JSON API, não esqueça de fazer backup do banco.
/*
Controller name: Locations
Controller description: Essa URL gera uma lista de estados/cidades dentro de uma taxonomia regioes.
*/
set_time_limit(0);
class JSON_API_Locations_Controller {
public function get_locations() {
$feed = json_decode(file_get_contents('brazil-cities-states.json'));
foreach ($feed->estados as $key => $estado) {
$sigla = $estado->sigla;
$estado_term = wp_insert_term($estado->sigla, 'cidade');
$current_term_id = $estado_term['term_id'];
foreach ($estado->cidades as $key => $cidade) {
wp_insert_term( $cidade, 'cidade', array( 'parent'=> $current_term_id ) );
}
}
return array('status' => 'OK');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment