From c4bc0b95576ea015e216293d98216ad9a365fda0 Mon Sep 17 00:00:00 2001 From: Nonimart Date: Thu, 18 Sep 2025 11:43:29 +0200 Subject: [PATCH] =?UTF-8?q?FIX=20Correction=20des=20probl=C3=A8mes=20de=20?= =?UTF-8?q?r=C3=A9organisation=20inintentionnel=20du=20tableau=20des=20pos?= =?UTF-8?q?ts=20lors=20de=20la=20sauvegarde=20darticles?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/article.php | 88 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/includes/article.php b/includes/article.php index 9b23e54..fbf6766 100644 --- a/includes/article.php +++ b/includes/article.php @@ -1,40 +1,77 @@ 'revues', 'meta_query' => array( @@ -46,14 +83,45 @@ function dynamiques_article_remove_articles_from_all_revues($current_article_ID) ), )); - foreach ($revues_containing_article->posts as $revue) { - $revue_ID = $revue->ID; - $revue_articles = get_field('articles', $revue_ID); + if ($revues_containing_article->have_posts()) { - $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); + 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); + } } }