<?php

/**
 * Plugin Name:       Dynamiques — Taxonomies
 * Description:       Gestion des taxonomies de dynamiques
 * Author:            Antoine M. @ Deligraph
 * Text Domain:       dynamiques-taxonomies
 */


/**
 * SYNCHRONISATION DES TAGS ('ETIQUETTES') ENTRE ARTICLES ET REVUES.
 *
 * - À l'enregistrement d'un Article (hook `save_post_articles`), on récupère la Revue liée
 *   via le champ ACF `related_revue`, puis on ajoute ses tags à ceux de la Revue,
 *
 * - À l'enregistrement d'une Revue (hook `save_post_revues`), on récupère tous les Articles liés à la revue
 *   via le champ ACF `articles` et on propage leurs étiquettes vers la Revue en réutilisant
 *   la fonction précédente pour chaque Article.
 *
 * Détails d'implémentation :
 * - Conversion des objets WP_Term en IDs via `wp_list_pluck`.
 * - Gestion des cas vides / non valides (false, WP_Error) avant fusion.
 * - Affectation finale avec `wp_set_object_terms`.
 */
function dynamiques_apply_current_article_tags_to_related_revue($article_ID)
{
	if (!$article_ID) return;
	$related_revue_ID = get_field('related_revue', $article_ID);
	if (!$related_revue_ID) return;

	$article_terms = get_the_terms($article_ID, 'etiquettes');
	$revue_terms   = get_the_terms($related_revue_ID, 'etiquettes');

	$article_ids = is_array($article_terms) ? wp_list_pluck($article_terms, 'term_id') : [];
	$revue_ids   = is_array($revue_terms)   ? wp_list_pluck($revue_terms, 'term_id')   : [];

	$revue_updated_terms_ids = array_values(array_unique(array_merge($revue_ids, $article_ids)));


	wp_set_object_terms($related_revue_ID, $revue_updated_terms_ids, 'etiquettes');
}

add_action('save_post_articles', 'dynamiques_apply_current_article_tags_to_related_revue', 99, 3);


function dynamiques_update_revue_tags_from_related_articles_on_save_post($post_ID)
{
	if (get_post_type($post_ID) !== 'revues') {
		return;
	}
	$related_articles = get_field('articles', $post_ID);
	if (!$related_articles) return;


	foreach ($related_articles as $article) {
		dynamiques_apply_current_article_tags_to_related_revue($article->ID);
	}
}
add_action('save_post_revues', 'dynamiques_update_revue_tags_from_related_articles_on_save_post', 99, 1);



function retetest()
{
	$revue_ID = 687;

	$revue_terms = get_the_terms($revue_ID, 'etiquettes');

	$revue_term_ids = (is_array($revue_terms) && !is_wp_error($revue_terms))
		? wp_list_pluck($revue_terms, 'term_id')
		: [];


	// Option A: ne pas lancer la requête si vide
	if (empty($revue_term_ids)) {
		return; // ou autre logique
	}

	$query = new WP_Query([
		'post_type'      => 'revues',
		'posts_per_page' => -1,
		'tax_query'      => [[
			'taxonomy' => 'etiquettes',
			'field'    => 'term_id',
			'terms'    => $revue_term_ids,
			'operator' => 'IN', // ou 'AND' si tu veux toutes les étiquettes
		]],
	]);
}
add_action('init', 'retetest');
