Metiers_du_patrimoine_theme/includes/artisans.php
Antoine M cfa6652cc1
All checks were successful
continuous-integration/drone/push Build is passing
refining artisans admin styles
2024-12-10 12:25:43 +01:00

127 lines
3.5 KiB
PHP

<?php
function metiers_patrimoine_artisans_post_updater($post_id)
{
if (!$post_id) return;
$my_post = array();
$my_post['ID'] = $post_id;
$name = get_field("name", $post_id);
$address = get_field("adresse", $post_id);
if (get_post_type() == 'artisans' && $name) {
$my_post['post_title'] = "";
$my_post['post_title'] = $name;
}
if ($address && isset($address['country'])) {
$stateGenericName = getGenericStateNameFromAcfStateName($address['state']) ?? "";
// write_log($stateGenericName);
// Met à jour le champ personnalisé 'country' avec la valeur du pays de l'adresse
update_post_meta($post_id, 'state', $stateGenericName);
}
// write_log($address);
wp_update_post($my_post);
}
add_action('acf/save_post', 'metiers_patrimoine_artisans_post_updater', 20);
function metiers_patrimoine_chantiers_post_updater($post_id)
{
if (!$post_id || get_post_type() !== 'chantiers') return;
$my_post = array();
$my_post['ID'] = $post_id;
$artisan = get_field("artisan", $post_id) ?? "";
$chantier_name = get_field("chantier_name", $post_id) ?? "";
$date = get_field("date", $post_id) ?? "";
$localisation = get_field("localisation", $post_id) ?? "";
if (!$artisan || !$chantier_name) return;
$title = $artisan->post_title . " | " . $chantier_name;
if ($localisation && isset($localisation['city'])) {
$title .= " | " . $localisation['city'];
}
if ($date) {
$title .= " | " . $date;
}
$my_post['post_title'] = $title;
wp_update_post($my_post);
}
add_action('acf/save_post', 'metiers_patrimoine_chantiers_post_updater', 20);
/* ---------------------------
CUSTOM CODE FOR TITLE
---------------------------*/
add_action('edit_form_after_title', function () {
// Vérifie si on est sur le bon post type
$screen = get_current_screen();
if ($screen && $screen->post_type === 'artisans') {
echo '<h1 class="admin-artisan-title">' . get_the_title() . '</h1>';
}
});
/* ---------------------------
CUSTOM CHANTIER META BOX AT THE END OF THE PAGE
---------------------------*/
add_action('add_meta_boxes', function () {
// Ajout de la metabox uniquement pour le post type 'artisans'
add_meta_box(
'admin_artisan_chantier_list', // ID de la metabox
'Chantiers réalisé par l\'entreprise', // Titre de la metabox
'render_custom_chantier_box_content', // Fonction de rendu
'artisans', // Post type
'normal', // Contexte
'low' // Priorité
);
});
/**
* Fonction de rendu du contenu de la metabox.
*/
function render_custom_chantier_box_content($post)
{
$args = array(
'post_type' => 'chantiers',
'posts_per_page' => -1,
'post_status' => 'publish',
'meta_query' => array(
array(
'key' => 'artisan',
'value' => $post->ID,
'compare' => '=',
),
),
);
$chantiers = new WP_Query($args);
// Afficher les chantiers
if ($chantiers->have_posts()) {
echo '<h3> Chantiers réalisé par l\'entreprise </h3>';
echo '<ul>';
while ($chantiers->have_posts()) {
$chantiers->the_post();
$chantier_name = get_field('chantier_name');
echo '<li><a href="' . get_edit_post_link() . '"> <img src=' . get_stylesheet_directory_uri() . '/resources/img/icons/document-inspect.svg' . ' /> ' . $chantier_name . '</a></li>';
}
echo '</ul>';
} else {
echo '<h3> Chantiers réalisés</h3>';
echo '<p class="no-results">Aucun chantier pour cette entreprise</p>';
echo '<a href="' . admin_url('post-new.php?post_type=chantiers') . '" class="new-chantier">Ajouter un chantier</a>';
}
}