[glc_videos] [glc_podcasts]
🐘
filename.php
<?php
/**
 * Shortcode [glc_videos] : affiche les vidéos YouTube du GLC
 */
function glc_videos_shortcode() {
    $response = wp_remote_get('https://glcbaudour.be/api/glc-videos.php');

    if (is_wp_error($response)) {
        return '<p>Impossible de charger les vidéos pour le moment.</p>';
    }

    $body   = wp_remote_retrieve_body($response);
    $videos = json_decode($body, true);

    if (!is_array($videos)) {
        return '<p>Format de données invalide.</p>';
    }

    ob_start();
    ?>
    <div class="glc-videos">
        <?php foreach ($videos as $video): ?>
            <div class="glc-video-item">
                <img
                    src="<?php echo esc_url($video['thumbnailUrl']); ?>"
                    alt="<?php echo esc_attr($video['title']); ?>"
                />
                <h3><?php echo esc_html($video['title']); ?></h3>
                <p class="glc-video-date">
                    <?php echo esc_html(date_i18n('j F Y', strtotime($video['publishedAt']))); ?>
                </p>
                <a href="<?php echo esc_url($video['link']); ?>" target="_blank" rel="noopener">
                    Voir la vidéo
                </a>
            </div>
        <?php endforeach; ?>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode('glc_videos', 'glc_videos_shortcode');

/**
 * Shortcode [glc_podcasts] : affiche les podcasts du flux Ausha
 */
function glc_podcasts_shortcode() {
    $response = wp_remote_get('https://glcbaudour.be/api/podcasts');

    if (is_wp_error($response)) {
        return '<p>Impossible de charger les podcasts pour le moment.</p>';
    }

    $body      = wp_remote_retrieve_body($response);
    $podcasts  = json_decode($body, true);

    if (!is_array($podcasts)) {
        return '<p>Format de données invalide.</p>';
    }

    ob_start();
    ?>
    <div class="glc-podcasts">
        <?php foreach ($podcasts as $p): ?>
            <div class="glc-podcast-item">
                <?php if (!empty($p['imageUrl'])): ?>
                    <img
                        src="<?php echo esc_url($p['imageUrl']); ?>"
                        alt="<?php echo esc_attr($p['title']); ?>"
                    />
                <?php endif; ?>

                <h3><?php echo esc_html($p['title']); ?></h3>

                <?php if (!empty($p['publishedAt'])): ?>
                    <p class="glc-podcast-date">
                        <?php echo esc_html(date_i18n('j F Y', strtotime($p['publishedAt']))); ?>
                    </p>
                <?php endif; ?>

                <?php if (!empty($p['description'])): ?>
                    <p class="glc-podcast-desc">
                        <?php echo esc_html($p['description']); ?>
                    </p>
                <?php endif; ?>

                <?php if (!empty($p['audioUrl'])): ?>
                    <audio controls style="width:100%;">
                        <source src="<?php echo esc_url($p['audioUrl']); ?>" type="audio/mpeg">
                        Votre navigateur ne supporte pas l’élĂ©ment audio.
                    </audio>
                <?php endif; ?>
            </div>
        <?php endforeach; ?>
    </div>
    <?php
    return ob_get_clean();
}
add_shortcode('glc_podcasts', 'glc_podcasts_shortcode');