Compare commits

...

10 Commits

9 changed files with 130 additions and 18 deletions

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

View File

@ -1,5 +1,66 @@
<?php
function get_the_parent_terms($taxonomy, $postID = null)
{
if (!$postID || !$taxonomy || !taxonomy_exists($taxonomy)) return null;
$terms = get_the_terms($postID, $taxonomy);
if (!$terms || empty($terms)) return [];
$parentTerms = array_filter($terms, function ($term) {
return $term->parent == 0;
});
return $parentTerms;
}
function get_the_children_terms($taxonomy, $postID)
{
if (!$postID || !$taxonomy || !taxonomy_exists($taxonomy)) return null;
$terms = get_the_terms($postID, $taxonomy);
if (!$terms || empty($terms)) return [];
$childrenTerms = array_filter($terms, function ($term) {
return $term->parent !== 0;
});
return $childrenTerms;
}
function get_children_terms_from_specific_parent($taxonomy, $postID, $parentTerm)
{
if (!$postID || !$taxonomy || !taxonomy_exists($taxonomy)) return null;
$childrenTerms = get_the_children_terms($taxonomy, $postID);
$filteredChildrenTerms = array_filter($childrenTerms, function ($term) use ($parentTerm) {
return $term->parent === $parentTerm->term_id;
});
return $filteredChildrenTerms;
}
function get_the_terms_organised_by_parent($taxonomy, $postID = null)
{
if (!$postID) return;
$terms = get_the_terms($postID, $taxonomy);
$sortedTermsByParent = [];
if (!$terms) return $sortedTermsByParent;
$parentTerms = get_the_parent_terms($taxonomy, $postID);
foreach ($parentTerms as $parentTerm) {
$sortedTermsByParent[] = $parentTerm;
$childrenTerms = get_children_terms_from_specific_parent($taxonomy, $postID, $parentTerm);
foreach ($childrenTerms as $childTerm) {
$sortedTermsByParent[] = $childTerm;
}
}
return $sortedTermsByParent;
}
function getAllBatimentsTermsByParents()
{
// Récupérer tous les termes de la taxonomie 'elementsbatiments' avec une hiérarchie

View File

@ -2,5 +2,9 @@
@apply flex flex-wrap gap-2 mt-4;
.taxonomy-tag {
@apply bg-patrimoine-sante-securite-light text-patrimoine-sante-securite rounded-lg text-sm px-3 py-1;
&.taxonomy-tag--parent {
@apply bg-patrimoine-sante-securite font-semibold text-white;
}
}
}

View File

@ -34,7 +34,6 @@ $pageIcon = get_field('page_icon', get_queried_object_id()) ?? null;
<li><a href="<?php echo $frontPageUrl ?>"><?php echo $frontPageTitle ?></a></li>
<li><a href="<?php echo $searchPageUrl ?>"><?php echo $searchPageTitle ?></a></li>
<?php if ($currentPage) : ?>
@ -173,7 +172,6 @@ $pageIcon = get_field('page_icon', get_queried_object_id()) ?? null;
</div>
<p class="chantier__description"><?php echo $chantier_description ?></p>
<?php
// Rendre Un bloc acf/lightbox-gallery avec les photos du chantier
$block_content = '<!-- wp:acf/lightbox-gallery {"data":{"gallery":' . json_encode($pictures) . '}} /-->';

View File

@ -3,6 +3,6 @@
?>
<div class='no-results'>
<img class='no-results__cover' src="<?php echo get_stylesheet_directory_uri() . "/resources/img/illustrations/Homegrade_resultats-filtres-cactus.svg" ?>" alt='' />
<h3><?php echo __("Aucun résultat trouvé", "metiers-patrimoine-theme") ?> </h3>
<p> <?php echo __("Essayez d'ajouter un <span class='highlighted-purple'>filtre supplémentaire</span> pour trouver plus de résultats", "metiers-patrimoine-theme") ?></p>
<h3><?php echo __("Aucun artisan correspondant actuellement", "metiers-patrimoine-theme") ?> </h3>
<p> <?php echo __("Sélectionnez un ou plusieurs <span class='highlighted-purple'>métiers</span> ou <span class='highlighted-purple'>critères</span> pour lancer votre recherche", "metiers-patrimoine-theme") ?></p>
</div>

View File

@ -8,7 +8,8 @@ $post_permalink = get_the_permalink($postID);
$company_members = get_field('company_members', $postID);
$currentTaxonomy = $args['current_taxonomy'];
$taxonomyTerms = $currentTaxonomy === "elementsbatiments" ? get_the_terms($postID, 'elementsbatiments') : get_the_terms($postID, 'metiers');
// $taxonomyTerms = $currentTaxonomy === "elementsbatiments" ? get_the_terms($postID, 'elementsbatiments') : get_the_terms($postID, 'metiers');
$taxonomySortedTerms = $currentTaxonomy === "elementsbatiments" ? get_the_terms_organised_by_parent('elementsbatiments', $postID) : get_the_terms_organised_by_parent('metiers', $postID);
$phoneNumber = get_field('phone_number', $postID);
@ -34,14 +35,14 @@ $cover_image = get_field('artisan_cover', $postID);
<?php if ($company_members): ?>
<p class="card-artisans__team-members">
<?php foreach ($company_members as $key => $member) : ?>
<span><?php echo $member['first_name'] . ' ' . $member['last_name']; ?></span>
<span><?php echo $member['first_name'] . ' ' . $member['last_name'] . ' ' . ($key == count($company_members) - 1 ? '' : ', ') ?></span>
<?php endforeach; ?>
</p>
<?php endif; ?>
<?php if ($taxonomyTerms): ?>
<div class="card-artisans__taxonomy-tags">
<?php foreach ($taxonomyTerms as $key => $term) : ?>
<span class="taxonomy-tag"><?php echo $term->name; ?></span>
<?php if ($taxonomySortedTerms): ?>
<div class="card-artisans__taxonomy-tags taxonomy-tags">
<?php foreach ($taxonomySortedTerms as $key => $term) : ?>
<span class="taxonomy-tag taxonomy-tag--<?php echo $term->parent === 0 ? 'parent' : 'child'; ?>"><?php echo $term->name; ?></span>
<?php endforeach; ?>
</div>
<?php endif; ?>

View File

@ -34,7 +34,7 @@ $cover_image = get_field('artisan_cover', $postID);
<?php if ($company_members): ?>
<p class="card-artisans__team-members">
<?php foreach ($company_members as $key => $member) : ?>
<span><?php echo $member['first_name'] . ' ' . $member['last_name']; ?></span>
<span><?php echo $member['first_name'] . ' ' . $member['last_name'] . ' ' . ($key == count($company_members) - 1 ? '' : ', ') ?></span>
<?php endforeach; ?>
</p>
<?php endif; ?>

View File

@ -23,10 +23,7 @@
@apply font-bold !my-0;
}
&__taxonomy-tags {
@apply flex flex-wrap gap-2 mt-4;
.taxonomy-tag {
@apply bg-patrimoine-sante-securite-light text-patrimoine-sante-securite rounded-lg text-sm px-3 py-1;
}
@apply mt-2 mb-4;
}
&__contact-details-title {
@apply uppercase !font-medium text-neutral-400 !mb-3 !text-sm;

View File

@ -6,8 +6,8 @@ $post_permalink = get_the_permalink($postID);
$company_members = get_field('company_members', $postID);
$elementsBatimentsTerms = get_the_terms($postID, 'elementsbatiments');
$metiersTerms = get_the_terms($postID, 'metiers');
// $metiersTerms = get_the_terms($postID, 'metiers');
$metiersTerms = get_the_terms_organised_by_parent('metiers', $postID); // From utilities.php
$hasEmptyTaxos = (empty($elementsBatimentsTerms) && empty($metiersTerms)) ? 'card-taxonomies--empty' : '';
?>
@ -35,7 +35,7 @@ $hasEmptyTaxos = (empty($elementsBatimentsTerms) && empty($metiersTerms)) ? 'car
</div>
<div class="taxonomy-tags card-taxonomies__taxonomy-tags">
<?php foreach ($metiersTerms as $key => $term) : ?>
<span class="taxonomy-tag"><?php echo $term->name; ?></span>
<span class="taxonomy-tag taxonomy-tag--<?php echo $term->parent === 0 ? 'parent' : 'child'; ?>"><?php echo $term->name; ?></span>
<?php endforeach; ?>
</div>
</div>