/*
Theme Name: Divi Child
Theme URI: http://www.elegantthemes.com/gallery/divi/
Template: Divi
Author: Elegant Themes
Author URI: http://www.elegantthemes.com
Description: Smart. Flexible. Beautiful. Divi is the most powerful theme in our collection.
Version: 5.6.0.1779813724
Updated: 2026-05-26 16:42:04

*/


/**
<?php
/**
 * Shortcode [gpl_cursos] — listado automático de cursos del Aula
 *
 * Pegar al final del functions.php del tema hijo (SIN repetir la etiqueta <?php
 * si el archivo ya la tiene al principio).
 *
 * Uso en la página /aula/:  [gpl_cursos]
 *
 * Opciones:
 *   [gpl_cursos tipo="curso"]        → nombre del CPT (por defecto "curso")
 *   [gpl_cursos columnas="3"]        → 3, 2 o 1
 *   [gpl_cursos orden="menu_order"]  → menu_order | title | date
 *
 * IMPORTANTE: cambia el valor por defecto de "tipo" si tu CPT no se llama
 * "curso". Lo ves en la URL al editar un curso: post_type=XXXX
 */

function gpl_cursos_shortcode( $atts ) {

    $a = shortcode_atts( array(
        'tipo'     => 'curso',        // <-- AJUSTAR si hace falta
        'columnas' => '3',
        'orden'    => 'menu_order',
        'limite'   => '-1',
    ), $atts );

    $args = array(
        'post_type'      => sanitize_key( $a['tipo'] ),
        'post_status'    => 'publish',
        'posts_per_page' => intval( $a['limite'] ),
        'orderby'        => in_array( $a['orden'], array( 'menu_order', 'title', 'date' ), true )
                            ? $a['orden'] : 'menu_order',
        'order'          => ( $a['orden'] === 'date' ) ? 'DESC' : 'ASC',
    );

    $q = new WP_Query( $args );

    if ( ! $q->have_posts() ) {
        return '<p>Todavía no hay cursos publicados.</p>';
    }

    $cols = in_array( $a['columnas'], array( '1', '2', '3' ), true ) ? $a['columnas'] : '3';

    ob_start();
    ?>
    <div class="gpl-cursos gpl-cols-<?php echo esc_attr( $cols ); ?>">
    <?php while ( $q->have_posts() ) : $q->the_post();

        // Campos opcionales de Meta Box. Si no existen, no se pinta nada.
        // Cambia los nombres entre comillas por los tuyos.
        $lecciones = function_exists( 'rwmb_meta' ) ? rwmb_meta( 'lecciones' ) : '';
        $tests     = function_exists( 'rwmb_meta' ) ? rwmb_meta( 'tests' ) : '';
        $estado    = function_exists( 'rwmb_meta' ) ? rwmb_meta( 'estado' ) : '';
        $titulacion= function_exists( 'rwmb_meta' ) ? rwmb_meta( 'titulacion' ) : '';
        ?>
        <article class="gpl-curso">

            <a class="gpl-curso__img" href="<?php the_permalink(); ?>">
                <?php if ( has_post_thumbnail() ) : ?>
                    <?php the_post_thumbnail( 'medium_large' ); ?>
                <?php else : ?>
                    <span class="gpl-curso__placeholder"><?php echo esc_html( mb_substr( get_the_title(), 0, 1 ) ); ?></span>
                <?php endif; ?>
            </a>

            <div class="gpl-curso__cuerpo">

                <?php if ( $titulacion ) : ?>
                    <span class="gpl-curso__kicker"><?php echo esc_html( $titulacion ); ?></span>
                <?php endif; ?>

                <h3 class="gpl-curso__titulo">
                    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                </h3>

                <?php if ( has_excerpt() ) : ?>
                    <p class="gpl-curso__texto"><?php echo esc_html( get_the_excerpt() ); ?></p>
                <?php endif; ?>

                <?php if ( $lecciones || $tests || $estado ) : ?>
                    <div class="gpl-curso__meta">
                        <?php if ( $lecciones ) : ?><span><?php echo esc_html( $lecciones ); ?> lecciones</span><?php endif; ?>
                        <?php if ( $tests ) : ?><span class="es-test"><?php echo esc_html( $tests ); ?> tests</span><?php endif; ?>
                        <?php if ( $estado ) : ?><span><?php echo esc_html( $estado ); ?></span><?php endif; ?>
                    </div>
                <?php endif; ?>

            </div>

            <a class="gpl-curso__boton" href="<?php the_permalink(); ?>">Entrar al curso</a>

        </article>
    <?php endwhile; ?>
    </div>

    <style>
    .gpl-cursos{display:grid;gap:22px;margin:32px 0}
    .gpl-cols-3{grid-template-columns:repeat(3,1fr)}
    .gpl-cols-2{grid-template-columns:repeat(2,1fr)}
    .gpl-cols-1{grid-template-columns:1fr}
    @media (max-width:980px){.gpl-cols-3{grid-template-columns:repeat(2,1fr)}}
    @media (max-width:640px){.gpl-cursos{grid-template-columns:1fr!important}}

    .gpl-curso{display:flex;flex-direction:column;background:#fff;
      border:1px solid #d8dcde;transition:transform .2s ease,box-shadow .2s ease}
    .gpl-curso:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(15,20,23,.09)}

    .gpl-curso__img{display:block;aspect-ratio:16/9;overflow:hidden;background:#eceef0;
      display:flex;align-items:center;justify-content:center}
    .gpl-curso__img img{width:100%;height:100%;object-fit:cover;display:block}
    .gpl-curso__placeholder{font-size:52px;font-weight:300;color:#c4cacd}

    .gpl-curso__cuerpo{padding:20px 20px 0;display:flex;flex-direction:column;gap:8px;flex:1}
    .gpl-curso__kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#a8853f}
    .gpl-curso__titulo{margin:0;font-size:21px;line-height:1.25}
    .gpl-curso__titulo a{text-decoration:none;color:inherit}
    .gpl-curso__texto{margin:0;font-size:15px;line-height:1.5;color:#4a555b}

    .gpl-curso__meta{margin-top:auto;padding-top:14px;display:flex;flex-wrap:wrap;gap:6px 16px;
      font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#7c878c}
    .gpl-curso__meta .es-test{color:#7a2e2e}

    .gpl-curso__boton{margin:20px;padding:11px 14px;text-align:center;text-decoration:none;
      border:1px solid #0f1417;color:#0f1417;font-size:11px;letter-spacing:.14em;
      text-transform:uppercase;transition:.2s}
    .gpl-curso:hover .gpl-curso__boton{background:#0f1417;color:#fff}
    </style>
    <?php
    wp_reset_postdata();
    return ob_get_clean();
}
add_shortcode( 'gpl_cursos', 'gpl_cursos_shortcode' );