'revues', 'meta_query' => array( array( 'key' => 'articles', 'value' => '"' . $current_article_ID . '"', 'compare' => 'LIKE', ), ), )); if ($revues_containing_article->have_posts()) { foreach ($revues_containing_article->posts as $revue) { $revue_ID = $revue->ID; $revue_articles = get_field('articles', $revue_ID); $revue_articles = array_filter($revue_articles, function ($article) use ($current_article_ID) { return (is_object($article) && isset($article->ID)) ? $article->ID != $current_article_ID : $article != $current_article_ID; }); update_field('articles', $revue_articles, $revue_ID); } } } function dynamiques_article_remove_articles_from_all_other_revues($current_article_ID, $related_revue_ID) { $revues_containing_article = new WP_Query(array( 'post_type' => 'revues', 'post__not_in' => array($related_revue_ID), 'meta_query' => array( array( 'key' => 'articles', 'value' => '"' . $current_article_ID . '"', 'compare' => 'LIKE', ), ), )); if ($revues_containing_article->have_posts()) { foreach ($revues_containing_article->posts as $revue) { $revue_ID = $revue->ID; $revue_articles = get_field('articles', $revue_ID); $revue_articles = array_filter($revue_articles, function ($article) use ($current_article_ID) { return (is_object($article) && isset($article->ID)) ? $article->ID != $current_article_ID : $article != $current_article_ID; }); update_field('articles', $revue_articles, $revue_ID); } } } /** * Injecte automatiquement des IDs aux titres H2 dans le contenu * pour permettre la navigation par ancres */ function dynamiques_render_article_inject_ids_to_headings($content) { // Ne traiter que si on est dans une page de contenu if (!is_singular() || !in_the_loop()) { return $content; } // Utiliser la fonction native WordPress pour créer le slug function create_slug($text) { $slug = sanitize_title($text); // S'assurer que l'ancre n'est pas vide if (empty($slug)) { $slug = 'anchor'; } // Ajouter un préfixe si l'ancre commence par un chiffre if (preg_match('/^[0-9]/', $slug)) { $slug = 'anchor-' . $slug; } return $slug; } // Utiliser DOMDocument pour parser le HTML $dom = new DOMDocument(); // Supprimer les avertissements pour les entités HTML libxml_use_internal_errors(true); // Encoder le contenu en UTF-8 et l'ajouter au DOM $dom->loadHTML('' . $content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // Restaurer les erreurs libxml_clear_errors(); // Chercher tous les H2 et H3 $headings = $dom->getElementsByTagName('h2'); // Traiter les H2 foreach ($headings as $heading) { if (!$heading->hasAttribute('id')) { $text = $heading->textContent; $slug = create_slug($text); $heading->setAttribute('id', $slug); } } // Récupérer le HTML modifié $modified_content = $dom->saveHTML(); // Nettoyer l'encodage XML ajouté $modified_content = preg_replace('/^/', '', str_replace(['', ''], '', $modified_content)); return $modified_content; } // Appliquer le filtre sur le contenu add_filter('the_content', 'dynamiques_render_article_inject_ids_to_headings', 20);