diff --git a/includes/artisans.php b/includes/artisans.php index 61ee234..7701dbf 100644 --- a/includes/artisans.php +++ b/includes/artisans.php @@ -11,11 +11,13 @@ function metiers_patrimoine_artisans_post_updater($post_id) $name = get_field("name", $post_id); $address = get_field("adresse", $post_id); + // ###### Update post title if name is set ###### if (get_post_type() == 'artisans' && $name) { $my_post['post_title'] = ""; $my_post['post_title'] = $name; } + // ###### Update custom "state" post Meta (used in search) ###### if ($address && isset($address['country'])) { $stateGenericName = getGenericStateNameFromAcfStateName($address['state']) ?? ""; update_post_meta($post_id, 'state', $stateGenericName); @@ -25,6 +27,55 @@ function metiers_patrimoine_artisans_post_updater($post_id) } add_action('acf/save_post', 'metiers_patrimoine_artisans_post_updater', 20); + +/* ------------------------------------------------------ +AUTO CHECK PARENT TAXONOMIES WHEN CHILDREN ARE CHOSEN +---------------------------------------------------------*/ +function metiers_patrimoine_artisans_post_taxonomies_updater($post_id) +{ + + if (!$post_id || get_post_type() !== 'artisans') return; + + $metiersTerms = get_the_terms($post_id, 'metiers'); + $elementsBatimentsTerms = get_the_terms($post_id, 'elementsbatiments'); + + // ###### METIERS — ADD PARENT TAXONOMIES IF NOT ALREADY ADDED ###### + if ($metiersTerms) { + $existingMetiersTermIds = array_column($metiersTerms, 'term_id'); + + // Parcours chaque terme et ajoute son parent si absent + foreach ($metiersTerms as $term) { + if ($term->parent && !in_array($term->parent, $existingMetiersTermIds)) { + $parentTerm = get_term($term->parent, 'metiers'); + if ($parentTerm && !is_wp_error($parentTerm)) { + wp_add_object_terms($post_id, $parentTerm->term_id, 'metiers'); // Update les posts terms directement + $existingMetiersTermIds[] = $parentTerm->term_id; // Ajoute l'ID du parent à une liste pour éviter de pusher plusieurs fois le parent + } + } + } + } + + + // ###### ELEMENTS BATIMENTS — ADD PARENT TAXONOMIES IF NOT ALREADY ADDED ###### + if ($elementsBatimentsTerms) { + $existingElementsBatimentsTermIds = array_column($elementsBatimentsTerms, 'term_id'); + + foreach ($elementsBatimentsTerms as $term) { + if ($term->parent && !in_array($term->parent, $existingElementsBatimentsTermIds)) { + $parentTerm = get_term($term->parent, 'elementsbatiments'); + if ($parentTerm && !is_wp_error($parentTerm)) { + wp_add_object_terms($post_id, $parentTerm->term_id, 'elementsbatiments'); // Update les posts terms directement + $existingElementsBatimentsTermIds[] = $parentTerm->term_id; // Ajoute l'ID du parent à une liste pour éviter de pusher plusieurs fois le parent + } + } + } + } +} +add_action('acf/save_post', 'metiers_patrimoine_artisans_post_taxonomies_updater', 20); + + + + /* ----------------------------------------------- AUTOMATIZE POST STATUS DEPENDING ON MDP STATUS --------------------------------------------------*/