post

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

Publicado em: 22/04/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.


Link de 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 para mim, e sugira alguma publicação de algum tema que tenha dificuldades de resolver.

Clique aqui e entre em contato


Comentários