post #2723
Obtendo listagem de categorias hierárquicas personalizadas com PHP + JetPlugins no WordPress
Publicado em: 22/04/2023 / Atualizado em: 26/08/2023
Caso esteja construindo um site em WordPress, principalmente usando Elementor usando o JetPlugins, e precise customizar a maneira como esses plugins trazem as categorias, esse post pode lhe ajudar.
Primeiro recomendo que instale o plugin WPCode para criarmos um shortcode rapido que possa ser usado no Elementor, como mostra abaixo:

Criando um shortcode novo em branco, cole o código abaixo:
<?php
$taxonomy_slug = 'marca'; //Trocar pelo Slug da categoria
$post_id = get_the_ID(); // obter o ID do post atual
//Ou, caso esteja usando um loop (Listing Grid) com o Plugin JetEngine:
//$post_id = do_shortcode('[jet_engine_data dynamic_field_post_object="post_id" dynamic_field_custom=""]');
$terms = get_the_terms($post_id, $taxonomy_slug);
if ($terms && !is_wp_error($terms)) {
echo '<ul class="ul-list-custom-categorias">';
wp_list_categories(array(
'taxonomy' => $taxonomy_slug,
'hide_empty' => false,
'hierarchical' => true,
'title_li' => '',
'include' => wp_list_pluck($terms, 'term_id'),
'walker' => new Custom_construct_link_category,
));
echo '</ul>';
}
class Custom_construct_link_category extends Walker_Category {
function start_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class='subcategories'>\n";
}
function end_lvl(&$output, $depth = 0, $args = array()) {
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul>\n";
}
function start_el(&$output, $category, $depth = 0, $args = array(), $id = 0) {
$cat_name = esc_attr($category->name);
$cat_slug = esc_attr($category->slug);
if($depth === 0) { // (0) Categoria principal / (1, 2, 3, etc...) Subcategoria em diante
$link = '<a href="' . esc_url(get_term_link($category)) . '" class="a-link-custom-lvl-1">' . $cat_name . '</a>';
} else {
$link = '<a href="' . esc_url(get_term_link($category)) . '" class="a-link-custom-lvl-2">' . $cat_name . '</a>';
}
$output .= sprintf("\n<li>%s</li>", $link);
}
}
Pronto! Agora é só copiar o shortcode gerado pelo plugin, e colar em sua pagina personalizada com Elementor.
Publicações recomendadas:
Link Direto
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.
bruno.art.br/?p=2723
ID de Referência: 2723
Sugira uma publicação
Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.