ADD Implement dynamic article linking and unlinking for 'revues' in revue.php to manage related articles effectively.
This commit is contained in:
parent
b90dde9f51
commit
b9ae1822f9
67
includes/revue.php
Normal file
67
includes/revue.php
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function dynamiques_revue_save_post($post_id)
|
||||||
|
{
|
||||||
|
$current_revue_ID = $post_id;
|
||||||
|
$post_type = get_post_type($post_id);
|
||||||
|
if ($post_type !== 'revues') return;
|
||||||
|
|
||||||
|
// DE-LINK ARTICLES NOT USED IN THE ACF CHAPTER HANDLER IN REVUE POST ('articles' field)
|
||||||
|
dynamiques_revue_empty_unmapped_articles($current_revue_ID);
|
||||||
|
dynamiques_revue_link_mapped_articles($current_revue_ID);
|
||||||
|
}
|
||||||
|
add_action('acf/save_post', 'dynamiques_revue_save_post', 20);
|
||||||
|
|
||||||
|
|
||||||
|
function dynamiques_revue_empty_unmapped_articles($current_revue_ID)
|
||||||
|
{
|
||||||
|
$articles = get_field('articles', $current_revue_ID);
|
||||||
|
|
||||||
|
// GET ALL ARTICLES RELATED TO THE REVUE AND CHECK IF THEY ARE HANDLED BY THE PARENT REVUE IN THE ARTICLE FIELD
|
||||||
|
|
||||||
|
$articles_related_to_revue = new WP_Query(array(
|
||||||
|
'post_type' => 'articles',
|
||||||
|
'meta_query' => array(
|
||||||
|
array(
|
||||||
|
'key' => 'related_revue',
|
||||||
|
'value' => $current_revue_ID,
|
||||||
|
'compare' => '=',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
));
|
||||||
|
|
||||||
|
$articles_related_to_revue_posts = $articles_related_to_revue->posts;
|
||||||
|
|
||||||
|
|
||||||
|
$articles_related_to_revue_ids = array_map(function ($post) {
|
||||||
|
return $post->ID;
|
||||||
|
}, $articles_related_to_revue_posts);
|
||||||
|
|
||||||
|
$articles_ids = array_map(function ($article) {
|
||||||
|
return $article->ID;
|
||||||
|
}, $articles);
|
||||||
|
|
||||||
|
// GET THE ARTICLES THAT ARE NOT HANDLED BY THE PARENT REVUE IN THE ARTICLE FIELD
|
||||||
|
$unmapped_articles_ids = array_diff($articles_related_to_revue_ids, $articles_ids);
|
||||||
|
|
||||||
|
|
||||||
|
// EMPTY THE ARTICLE FIELD BECAUSE NOT USED BY THE PARENT REVUE
|
||||||
|
|
||||||
|
foreach ($unmapped_articles_ids as $article_id) {
|
||||||
|
update_field('related_revue', null, $article_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function dynamiques_revue_link_mapped_articles($current_revue_ID)
|
||||||
|
{
|
||||||
|
$articles = get_field('articles', $current_revue_ID);
|
||||||
|
|
||||||
|
foreach ($articles as $article) {
|
||||||
|
$article_id = $article->ID;
|
||||||
|
$related_revue = get_field('related_revue', $article_id);
|
||||||
|
update_field('related_revue', $current_revue_ID, $article_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user