FEATURE Add automatic parent taxonomy updates for 'metiers' and 'elementsbatiments' when children are selected
This commit is contained in:
parent
f64a63fdf6
commit
10668511d7
|
|
@ -11,11 +11,13 @@ function metiers_patrimoine_artisans_post_updater($post_id)
|
||||||
$name = get_field("name", $post_id);
|
$name = get_field("name", $post_id);
|
||||||
$address = get_field("adresse", $post_id);
|
$address = get_field("adresse", $post_id);
|
||||||
|
|
||||||
|
// ###### Update post title if name is set ######
|
||||||
if (get_post_type() == 'artisans' && $name) {
|
if (get_post_type() == 'artisans' && $name) {
|
||||||
$my_post['post_title'] = "";
|
$my_post['post_title'] = "";
|
||||||
$my_post['post_title'] = $name;
|
$my_post['post_title'] = $name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ###### Update custom "state" post Meta (used in search) ######
|
||||||
if ($address && isset($address['country'])) {
|
if ($address && isset($address['country'])) {
|
||||||
$stateGenericName = getGenericStateNameFromAcfStateName($address['state']) ?? "";
|
$stateGenericName = getGenericStateNameFromAcfStateName($address['state']) ?? "";
|
||||||
update_post_meta($post_id, 'state', $stateGenericName);
|
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);
|
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
|
AUTOMATIZE POST STATUS DEPENDING ON MDP STATUS
|
||||||
--------------------------------------------------*/
|
--------------------------------------------------*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user