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);
|
||||
$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
|
||||
--------------------------------------------------*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user