Metiers_du_patrimoine_theme/includes/artisans.php

293 lines
9.1 KiB
PHP

<?php
/* ---------------------------------------
ARTISANS POST TITLE & ADRESS STATE UPDATER
------------------------------------------*/
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']) ?? "";
update_post_meta($post_id, 'state', $stateGenericName);
}
wp_update_post($my_post);
}
add_action('acf/save_post', 'metiers_patrimoine_artisans_post_updater', 20);
/* -----------------------------------------------
AUTOMATIZE POST STATUS DEPENDING ON MDP STATUS
--------------------------------------------------*/
function update_post_status_based_on_mdp_status($post_id)
{
if (get_post_type($post_id) !== 'artisans') return;
$mdp_status = get_field('mdp_status', $post_id);
$post_update = array(
'ID' => $post_id
);
// Définir le statut en fonction de la valeur du statut de travail mdp_status
if ($mdp_status && isset($mdp_status['value'])) {
switch ($mdp_status['value']) {
case 'ok':
case 'to_actualize':
$post_update['post_status'] = 'publish';
break;
case 'to_contact':
case 'deleted':
case 'rejected':
case 'none':
$post_update['post_status'] = 'offline';
break;
default:
return;
}
wp_update_post($post_update);
}
}
add_action('acf/save_post', 'update_post_status_based_on_mdp_status', 20);
/* ---------------------------------------
CUSTOM CONTENT AFTER POST TYPE TITLE
------------------------------------------*/
add_action('edit_form_after_title', function () {
$screen = get_current_screen();
$status_mdp = get_field('mdp_status', get_the_ID());
$post_status = get_post_status();
$translatedStatus = translate_wordpress_online_statuses($post_status);
if ($screen && $screen->post_type === 'artisans') {
?>
<h1 class="admin-artisan-title"><?php echo get_the_title() ?></h1>
<div id="top-status" class="top-status">
<div class="state-container">
<p>État :</p>
<span class="post-state post-state--<?php echo $post_status; ?>"><?php echo $translatedStatus; ?></span>
</div>
<div class="state-container">
<p>Statut de travail :</p>
<?php if (isset($status_mdp) && isset($status_mdp['value']) && isset($status_mdp['label'])): ?>
<span class="status-state status-state--<?php echo $status_mdp['value']; ?> "><?php echo $status_mdp['label']; ?></span>
<?php else : ?>
<span class="status-state status-state--none">Aucun !!</span>
<?php endif; ?>
</div>
<!-- <button id="set-offline-status" class="button button-secondary">Mettre Hors Ligne</button>
<button id="set-online-status" class="button button-secondary">Mettre En Ligne</button> -->
<button id="save-post-custom" class="button button-primary">Sauvegarder</button>
</div>
<script>
jQuery(function($) {
$('#set-offline-status').on('click', function(e) {
e.preventDefault();
$('#post_status').val('offline');
$('#post-status-display').text('Hors ligne');
$('#publish').trigger('click');
});
$('#set-online-status').on('click', function(e) {
e.preventDefault();
$('#post_status').val('publish');
$('#post-status-display').text('En ligne');
$('#publish').trigger('click');
});
$('#save-post-status').on('click', function(e) {
e.preventDefault();
// Déclencher la sauvegarde du post
$('#publish').trigger('click');
});
});
</script>
<?php
}
});
/* ---------------------------------------
METABOXES
------------------------------------------*/
/** ENQUEUE CUSTOM CHANTIER META BOX AT THE END OF THE PAGE **/
add_action('add_meta_boxes', function () {
add_meta_box(
'admin_artisan_chantier_list',
'Chantiers réalisés',
'render_custom_chantier_box_content',
'artisans',
'normal',
'default'
);
});
/** RENDER CHANTIER 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()) {
$artisan_id = get_the_ID();
$return_to = get_edit_post_link($artisan_id);
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>';
echo '<a href="' . admin_url('post-new.php?post_type=chantiers&return_to=' . urlencode($return_to)) . '" class="new-chantier">Ajouter un chantier</a>';
} 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&return_to=' . urlencode($return_to)) . '" class="new-chantier">Ajouter un chantier</a>';
}
}
/** REMOVE SUBMITDIV METABOX **/
add_action('admin_menu', 'remove_submit_div');
function remove_submit_div()
{
remove_meta_box('submitdiv', 'artisans', 'side');
remove_meta_box('postimagediv', 'artisans', 'normal');
remove_meta_box('postimagediv', 'artisans', 'side');
remove_meta_box('postimagediv', 'artisans', 'advanced');
$user = wp_get_current_user();
$metaboxes = get_user_meta($user->ID, 'metaboxhidden_artisans', true);
$metabox_order = get_user_meta($user->ID, 'meta-box-order_artisans', true);
}
/** UPDATE USER METABOX PREFERENCES WITH MANUAL ARRAY **/
function set_user_metabox_order($user_id)
{
$user_id = get_current_user_id();
// $metaboxes_order = get_user_meta($user_id, 'meta-box-order_artisans', true);
// $user_info = get_user_meta($user_id);
$metaboxes_hidden = get_user_meta($user_id, 'metaboxhidden_artisans', true);
$new_order = [
'acf_after_title' => '',
'side' => 'postimagediv,icl_div',
'normal' => 'acf-group_670d265c6ec0e,admin_artisan_chantier_list,acf-group_67581cdaf3262,acf-group_672358433051b,submitdiv,slugdiv,revisionsdiv',
'advanced' => 'rank_math_metabox',
];
update_user_meta($user_id, 'meta-box-order_artisans', $new_order);
if ($metaboxes_hidden === false || !is_array($metaboxes_hidden)) return;
$newArrray = array_merge($metaboxes_hidden, ['postimagediv', 'icldiv']);
update_user_meta($user_id, 'metaboxhidden_artisans', $newArrray);
}
add_action('admin_init', 'set_user_metabox_order');
/** RE-ENQUEUE SUBMITDIV METABOX **/
add_action('do_meta_boxes', 'reinsert_submitdiv_meta_box');
function reinsert_submitdiv_meta_box()
{
add_meta_box(
'submitdiv',
__('Sauver'),
'post_submit_meta_box',
'artisans',
'normal',
'low'
);
}
/** DE ACTIVATE SCREEN OPTIONS **/
function de_activite_screen_options()
{
$current_user = wp_get_current_user();
if ($current_user->roles[0] !== 'administrator') {
add_filter('screen_options_show_screen', '__return_false');
}
}
add_action('admin_init', 'de_activite_screen_options');
/** FORBID SAVING USER REORGANISATION ON DRAG **/
add_action('check_ajax_referer', 'prevent_meta_box_order');
function prevent_meta_box_order($action)
{
// if ('meta-box-order' == $action /* && $wp_user == 'santa claus' */) {
// die('-1');
// }
}
/* ---------------------------------------
DELETE USER PREFERENCES
------------------------------------------*/
// function reset_user_metabox_order()
// {
// $user_id = get_current_user_id();
// if ($user_id && !current_user_can('administrator')) {
// delete_user_meta($user_id, 'meta-box-order_artisans');
// }
// }
// add_action('load-post.php', 'reset_user_metabox_order');
// add_action('load-post-new.php', 'reset_user_metabox_order');
/* -------------------------------------------------
ADD LAST MODIFIED DATE TO SUBMIT DIV PUBLISH BOX
-------------------------------------------------*/
function add_last_modified_date_to_publish_box()
{
global $post;
// Vérifiez que vous êtes dans un post et que l'ID du post est valide
if ($post && $post->ID) {
// Récupérer la date de dernière modification
$dashicon = '<span class="dashicons dashicons-update"></span>';
$last_modified_date = get_the_modified_date('j F Y \à H:i', $post->ID);
// Afficher la date de dernière modification dans le panneau
echo '<div class="misc-pub-section">';
echo $dashicon . ' Dernière update : ';
echo $last_modified_date;
echo '</div>';
}
}
// add_action('post_submitbox_start', 'add_last_modified_date_to_publish_box');
// post_submit_meta_box($post, array('side' => 'core'));