post

Obtendo listagem de categorias hierárquicas personalizadas com PHP + JetPlugins no WordPress

Publicado em: 22/04/2023 / Atualizado em: 26/08/2023

Categorias: BlogJetEngineJetPluginsPHPWordpress

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:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/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.

Clique aqui e entre em contato


Comentários