From 42a8c308f1a33315b6ee70f2b4b441e3103cf8f2 Mon Sep 17 00:00:00 2001 From: Alysson Silva Date: Wed, 23 Sep 2026 20:55:13 -0300 Subject: [PATCH 1/2] feat: adiciona grid de membros por categoria --- themes/learninglab-site/inc/shortcodes.php | 139 ++++++++++++++------- 1 file changed, 97 insertions(+), 42 deletions(-) diff --git a/themes/learninglab-site/inc/shortcodes.php b/themes/learninglab-site/inc/shortcodes.php index fa9f514..f25dd16 100644 --- a/themes/learninglab-site/inc/shortcodes.php +++ b/themes/learninglab-site/inc/shortcodes.php @@ -1,5 +1,46 @@ = 2 && $membros_count <= 5) { + $classe_limite = ' limite-' . $membros_count; + } elseif ($membros_count > 5) { + $classe_limite = ' limite-mais-de-5'; + } + + $output = '
'; + + foreach ($membros as $membro) { + $nome_completo = get_the_title($membro->ID); + $partes = explode(' ', trim($nome_completo)); + if (count($partes) <= 1) { + $nome_html = '' . esc_html($nome_completo) . ' '; + } else { + $sobrenome = array_pop($partes); + $primeiro_nomes = implode(' ', $partes); + $nome_html = '' . esc_html($primeiro_nomes) . '' . esc_html($sobrenome) . ''; + } + + $imagem = get_the_post_thumbnail($membro->ID, 'thumbnail', array('class' => 'attachment-thumbnail size-thumbnail wp-post-image')); + + $output .= '
'; + if ($imagem) { + $output .= '
' . $imagem . '
'; + } + $output .= '

' . $nome_html . '

'; + $output .= '
'; + } + + return $output . '
'; +} + function membros_shortcode($atts) { $atts = shortcode_atts( @@ -16,12 +57,7 @@ function membros_shortcode($atts) return ''; } - if (!is_admin()) { - wp_enqueue_style('learninglab_membro_style'); - } - - $output = '
'; - $membros_count = 0; + $membros = array(); foreach ($slugs as $slug) { if (empty($slug)) continue; @@ -32,51 +68,70 @@ function membros_shortcode($atts) 'post_status' => 'publish', 'numberposts' => 1, ); - $membros = get_posts($args); + $resultado = get_posts($args); - if ($membros) { - $post_obj = $membros[0]; - $post_id = $post_obj->ID; - - $nome_completo = get_the_title($post_id); - $partes = explode(' ', trim($nome_completo)); - if (count($partes) <= 1) { - $nome_html = '' . esc_html($nome_completo) . ' '; - } else { - $sobrenome = array_pop($partes); - $primeiro_nomes = implode(' ', $partes); - $nome_html = '' . esc_html($primeiro_nomes) . '' . esc_html($sobrenome) . ''; - } + if ($resultado) { + $membros[] = $resultado[0]; + } + } - $imagem = get_the_post_thumbnail($post_id, 'thumbnail', array('class' => 'attachment-thumbnail size-thumbnail wp-post-image')); + return learninglab_render_membros_grid($membros); +} +add_shortcode('membros', 'membros_shortcode'); - $output .= '
'; - if ($imagem) { - $output .= '
' . $imagem . '
'; - } - $output .= '

' . $nome_html . '

'; - $output .= '
'; +function membros_categoria_shortcode($atts) +{ + $atts = shortcode_atts( + array( + 'categoria' => '', + 'tipo' => 'atuais', + ), + $atts, + 'membros_categoria' + ); - $membros_count++; - } + $categoria = sanitize_title($atts['categoria']); + $tipos = array( + 'atuais' => 'membro-atual', + 'egressos' => 'egresso', + 'lideres' => 'lider', + ); + + if ($categoria === '' || ($atts['tipo'] !== 'todos' && !isset($tipos[$atts['tipo']]))) { + return ''; } - if ($membros_count === 2) { - $output = str_replace('
', '
', $output); - } elseif ($membros_count === 3) { - $output = str_replace('
', '
', $output); - } elseif ($membros_count === 4) { - $output = str_replace('
', '
', $output); - } elseif ($membros_count === 5) { - $output = str_replace('
', '
', $output); - } elseif ($membros_count > 5) { - $output = str_replace('
', '
', $output); + + $tax_query = array( + array( + 'taxonomy' => 'tipo_de_membro', + 'field' => 'slug', + 'terms' => $categoria, + 'include_children' => true, + ), + ); + + if ($atts['tipo'] !== 'todos') { + $tax_query['relation'] = 'AND'; + $tax_query[] = array( + 'taxonomy' => 'tipo_de_membro', + 'field' => 'slug', + 'terms' => $tipos[$atts['tipo']], + 'include_children' => $atts['tipo'] === 'lideres', + ); } - $output .= '
'; + $membros = get_posts(array( + 'post_type' => 'membro', + 'post_status' => 'publish', + 'posts_per_page' => -1, + 'orderby' => 'title', + 'order' => 'ASC', + 'tax_query' => $tax_query, + )); - return $output; + return $membros ? learninglab_render_membros_grid($membros) : ''; } -add_shortcode('membros', 'membros_shortcode'); +add_shortcode('membros_categoria', 'membros_categoria_shortcode'); From 1c2a499e01e400ae60e94bdaa2678c652d59b772 Mon Sep 17 00:00:00 2001 From: Alysson Silva Date: Wed, 23 Sep 2026 21:37:12 -0300 Subject: [PATCH 2/2] fix: inclui setores filhos no filtro de membros atuais --- themes/learninglab-site/inc/shortcodes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/learninglab-site/inc/shortcodes.php b/themes/learninglab-site/inc/shortcodes.php index f25dd16..aa7f552 100644 --- a/themes/learninglab-site/inc/shortcodes.php +++ b/themes/learninglab-site/inc/shortcodes.php @@ -116,7 +116,7 @@ function membros_categoria_shortcode($atts) 'taxonomy' => 'tipo_de_membro', 'field' => 'slug', 'terms' => $tipos[$atts['tipo']], - 'include_children' => $atts['tipo'] === 'lideres', + 'include_children' => in_array($atts['tipo'], array('atuais', 'lideres'), true), ); }