FEATURE Add automatic parent taxonomy updates for 'metiers' and 'elementsbatiments' when children are selected

This commit is contained in:
Nonimart 2025-06-13 12:48:45 +02:00
parent f64a63fdf6
commit 10668511d7

View File

@ -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
--------------------------------------------------*/