E eu mais feliz ainda por existir essa comunidade (y)
Olá.
Sou novato em tudo isso, e estou tentando criar um mapa de representantes.
Graças a esse tópico consegui criar o mapa, mas não consigo fazer com que o representante seja exibido ao clicar no estado.
Poderiam ajudar um noob?
Olá tainansv
No sisteminha que eu fiz, eu usei Ajax (jquery) pra pegar o valor, no caso, o estado, selecionado e passar pro WP e assim me trazer a listagem de representantes na mesma página, sem refresh.
O mapa eu montei assim:
<ul id="mapa">
<?php
$estados = get_terms('estado', array('hide_empty' => false)); //print_r($estados);
if( $estados ){
foreach( $estados as $estado ){
$term_data = get_option( "estado_term_$estado->term_id" );
echo '<li id="'.strtolower($term_data['sigla']).'"><a href="#'.$estado->slug.'" title="'.$estado->name.'"><span>'.$term_data['sigla'].'</span></a></li>';
}
}
?>
</ul>
<div id="lista-representantes"></div>
O javascript ficou assim:
<script type="text/javascript">
jQuery( function($){
$('#mapa li a').click( function(){
$('#mapa li a.active').removeClass('active');
$(this).addClass('active');
var url = this.href;
var hash = url.substring(url.indexOf('#')); //alert( hash );
//ajax
$.post( '<?php echo admin_url('admin-ajax.php') ?>', { action: 'representantes_do_estado', estado: hash },
function(data){
$('#lista-representantes').html(data);
}
);
});
});
</script>
Agora pra trabalhar com Ajax no WordPress, você pode aprender pelo Codex:
https://codex.wordpress.org/AJAX_in_Plugins
Acho que te passei bem mais da metade do caminho. O resto é super simples!
Bons estudos!
Abs.
Miriam de Paula
tainansv
No meu caso, fiz um pouco diferente da Miriam, acredito que o código dela está bem mais limpo e objetivo, até por ela ser uma expert.
Mas quero compartilhar meu código também. Dentro do loop, coloquei o seguinte:
$args = array( 'fields' => 'all', 'hide_empty' => false );
$terms = get_terms( 'estados', $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
$count = count( $terms );
$i = 0;
$term_list = '<p class="my_term-archive">';
foreach ( $terms as $term ) {
$i++;
$term_list .= '<li id="'.$term->slug.'"><a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</li></a>';
if ( $count != $i ) {
$term_list .= ' ';
}
else {
$term_list .= '</p>';
}
}
echo $term_list;
}
O javascript utilizei o mesmo que o dela 🙂