diff --git a/docs/guia-publicacion-carta-inma.md b/docs/guia-publicacion-carta-inma.md
index 3ebad8c..9122bbb 100644
--- a/docs/guia-publicacion-carta-inma.md
+++ b/docs/guia-publicacion-carta-inma.md
@@ -407,5 +407,14 @@ traducción inmediata, avisar a Rafa directamente además de pedírselo a Hermes
| Asignar `_carta_id` a un artículo | `POST /wp-json/fea/v1/carta-id/{id}` con body `{"carta_id": N}` |
| Borrar `_carta_id` de un artículo | `DELETE /wp-json/fea/v1/carta-id/{id}` |
+## Regla para la sección Evangelio y comentarios al Evangelio
+
+La sección empieza siempre con el enlace al post del evangelio de esa semana (por
+ejemplo, `MATEO 14, 22-33`) y después van los comentarios. Si ese post no existe,
+avisad antes de publicar la carta: no empecéis la sección por un comentario.
+
+No hay que completar ningún campo nuevo. A partir de ese enlace, el sitio asigna la
+cita bíblica automáticamente a los comentarios nuevos.
+
Campos útiles del post: `title`, `content` (HTML), `status` (`draft`/`publish`/`future`),
`date` (ISO 8601 para programar), `categories` (array de IDs), `featured_media` (ID de adjunto).
diff --git a/mu-plugins/fea-evangelio-comentarios.php b/mu-plugins/fea-evangelio-comentarios.php
new file mode 100644
index 0000000..55dddea
--- /dev/null
+++ b/mu-plugins/fea-evangelio-comentarios.php
@@ -0,0 +1,147 @@
+ 'MATEO', 'Mc' => 'MARCOS', 'Lc' => 'LUCAS', 'Jn' => 'JUAN'];
+ return $books[$m[1]] . ' ' . preg_replace('/\s+/u', ' ', trim($m[2]));
+}
+
+/** Localiza la lectura española, sin depender del slug (que puede llevar sufijos). */
+function fea_evangelio_reading_id($cita) {
+ global $wpdb;
+ static $cache = [];
+ $title = fea_evangelio_reading_title($cita);
+ if ($title === '') return 0;
+ if (isset($cache[$title])) return $cache[$title];
+ // La coincidencia se hace siempre contra la lectura original en español; después
+ // Polylang la sustituye por la traducción del comentario cuando exista.
+ $cat = 1645;
+ $sql = $wpdb->prepare(
+ "SELECT p.ID FROM {$wpdb->posts} p
+ INNER JOIN {$wpdb->term_relationships} tr ON tr.object_id = p.ID
+ INNER JOIN {$wpdb->term_taxonomy} tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
+ WHERE p.post_type = 'post' AND p.post_status = 'publish' AND p.post_title = %s
+ AND tt.taxonomy = 'category' AND tt.term_id = %d
+ ORDER BY p.post_date DESC LIMIT 1",
+ $title, $cat
+ );
+ return $cache[$title] = (int) $wpdb->get_var($sql);
+}
+
+/** Devuelve los evangelios enlazados en la sección pertinente de una carta. */
+function fea_evangelio_from_carta($carta_id) {
+ if (!function_exists('fea_parse_carta_sections')) return [];
+ if (function_exists('pll_get_post')) $carta_id = (int) (pll_get_post((int) $carta_id, 'es') ?: $carta_id);
+ $links = fea_parse_carta_sections((int) $carta_id)['evangelio'] ?? [];
+ $result = [];
+ foreach ($links as $id) {
+ $post = get_post($id);
+ if (!$post) continue;
+ $cita = get_post_meta($id, '* Cita biblica', true);
+ if (!$cita && preg_match('/^(MATEO|MARCOS|LUCAS|JUAN)\s+(.+)$/u', trim($post->post_title), $m)) {
+ $abbr = ['MATEO' => 'Mt', 'MARCOS' => 'Mc', 'LUCAS' => 'Lc', 'JUAN' => 'Jn'][$m[1]];
+ $cita = $abbr . ' ' . $m[2];
+ }
+ if (fea_evangelio_reading_title($cita)) $result[(string) $id] = trim($cita);
+ }
+ return $result;
+}
+
+/** Busca una carta en las tres categorías históricas, dentro de cuatro días. */
+function fea_evangelio_nearest_carta_id(WP_Post $post) {
+ $date = mysql2date('Y-m-d', $post->post_date, false);
+ $cartas = get_posts([
+ 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 10,
+ 'category__in' => array_map('fea_evangelio_category', [6, 21, 22]),
+ 'date_query' => [[
+ 'after' => date('Y-m-d', strtotime($date . ' -4 days')),
+ 'before' => date('Y-m-d', strtotime($date . ' +4 days')), 'inclusive' => true,
+ ]],
+ 'orderby' => 'date', 'order' => 'DESC',
+ ]);
+ if (!$cartas) return 0;
+ usort($cartas, function($a, $b) use ($post) {
+ return abs(strtotime($a->post_date) - strtotime($post->post_date)) <=> abs(strtotime($b->post_date) - strtotime($post->post_date));
+ });
+ return (int) $cartas[0]->ID;
+}
+
+/** Escribe solo metadatos ausentes cuando la carta identifica un único evangelio. */
+function fea_evangelio_capture_meta($post_id) {
+ $post = get_post($post_id);
+ if (!$post || $post->post_type !== 'post' || $post->post_status !== 'publish' || !fea_evangelio_is_comment($post_id)) return false;
+ if (get_post_meta($post_id, '_cita_evangelio', true)) return false;
+ $carta_id = (int) get_post_meta($post_id, '_carta_id', true);
+ if (!$carta_id) $carta_id = fea_evangelio_nearest_carta_id($post);
+ if (!$carta_id) return false;
+ $evangelios = fea_evangelio_from_carta($carta_id);
+ if (count($evangelios) !== 1) {
+ error_log(sprintf('Fe Adulta: comentario %d sin cita; carta %d tiene %d evangelios.', $post_id, $carta_id, count($evangelios)));
+ return false;
+ }
+ update_post_meta($post_id, '_cita_evangelio', reset($evangelios));
+ if (!get_post_meta($post_id, '_carta_id', true)) update_post_meta($post_id, '_carta_id', $carta_id);
+ return true;
+}
+
+function fea_evangelio_summary_label($lang) {
+ $labels = [
+ 'es' => 'Leer el evangelio', 'en' => 'Read the Gospel', 'fr' => 'Lire l’Évangile',
+ 'it' => 'Leggi il Vangelo', 'pt' => 'Ler o Evangelho',
+ ];
+ return $labels[$lang] ?? $labels['es'];
+}
+
+add_action('transition_post_status', function($new_status, $old_status, $post) {
+ if ($new_status === 'publish' && $old_status !== 'publish') fea_evangelio_capture_meta($post->ID);
+}, 20, 3);
+
+/** Añade referencia y texto plegado, cerrado por defecto, antes del comentario. */
+add_filter('the_content', function($content) {
+ if (!is_single() || is_admin()) return $content;
+ global $post;
+ if (!$post || !fea_evangelio_is_comment($post->ID)) return $content;
+ $cita = trim((string) get_post_meta($post->ID, '_cita_evangelio', true));
+ if (!$cita) return $content;
+ $reading_id = fea_evangelio_reading_id($cita);
+ $lang = function_exists('pll_current_language') ? pll_current_language() : 'es';
+ if ($reading_id && $lang && $lang !== 'es' && function_exists('pll_get_post')) $reading_id = (int) (pll_get_post($reading_id, $lang) ?: $reading_id);
+ $reading = $reading_id ? get_post($reading_id) : null;
+ $starts_with_cita = preg_match('/^\s*' . preg_quote($cita, '/') . '(?:[\s\.,:;\-–—]|$)/iu', wp_strip_all_tags($content));
+ $html = ' ' . esc_html($cita) . '' . esc_html(fea_evangelio_summary_label($lang)) . '
'
+ . wpautop(do_shortcode($reading->post_content)) . '