From e3be26b295c1d787fa0b172c530e4870f1e02fe0 Mon Sep 17 00:00:00 2001 From: Antoine M Date: Wed, 9 Apr 2025 09:46:03 +0200 Subject: [PATCH] FEAT Enhanced artisans post management with automated title and status updates, custom metaboxes, and improved admin interface elements. --- includes/artisans.php | 660 +++++++++++++++++++++--------------------- 1 file changed, 330 insertions(+), 330 deletions(-) diff --git a/includes/artisans.php b/includes/artisans.php index 19861d7..2358cd6 100644 --- a/includes/artisans.php +++ b/includes/artisans.php @@ -1,330 +1,330 @@ - $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 TOP 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); - $post_link = get_preview_post_link(); - - if ($screen && $screen->post_type === 'artisans') { -?> -

- action !== 'add') : ?> - - -
-
-

État :

- -
- -
-

Statut de travail :

- - - - Aucun !! - - -
- - -
- - -
- -
- - '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 '

Chantiers réalisés

'; - echo ''; - echo 'Ajouter un chantier'; - } else { - echo '

Chantiers réalisés

'; - echo '

Aucun chantier pour cette entreprise

'; - echo 'Ajouter un chantier'; - } -} - -/** 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 (isset($current_user->roles) && is_array($current_user->roles) && isset($current_user->roles[0]) && $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 = ''; - $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 '
'; - echo $dashicon . ' Dernière update : '; - echo $last_modified_date; - echo '
'; - } -} -// add_action('post_submitbox_start', 'add_last_modified_date_to_publish_box'); - - -// post_submit_meta_box($post, array('side' => 'core')); - - -/* ------------------------------------------------- -CHANGE ACF GALLERY ADD BUTTON TEXT TO "Ajouter des photos 📸" --------------------------------------------------*/ - -add_action('admin_enqueue_scripts', function () { - wp_add_inline_script('acf-input', " - jQuery(function($) { - $('.acf-gallery-add').text('🏞️ Ajouter des photos'); - }); - "); -}); + $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 TOP 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); + $post_link = get_preview_post_link(); + + if ($screen && $screen->post_type === 'artisans') { +?> +

+ action !== 'add') : ?> + + +
+
+

État :

+ +
+ +
+

Statut de travail :

+ + + + Aucun !! + + +
+ + +
+ + +
+ +
+ + '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 '

Chantiers réalisés

'; + echo ''; + echo 'Ajouter un chantier'; + } else { + echo '

Chantiers réalisés

'; + echo '

Aucun chantier pour cette entreprise

'; + echo 'Ajouter un chantier'; + } +} + +/** 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 (isset($current_user->roles) && is_array($current_user->roles) && isset($current_user->roles[0]) && $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 = ''; + $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 '
'; + echo $dashicon . ' Dernière update : '; + echo $last_modified_date; + echo '
'; + } +} +// add_action('post_submitbox_start', 'add_last_modified_date_to_publish_box'); + + +// post_submit_meta_box($post, array('side' => 'core')); + + +/* ------------------------------------------------- +CHANGE ACF GALLERY ADD BUTTON TEXT TO "Ajouter des photos 📸" +-------------------------------------------------*/ + +add_action('admin_enqueue_scripts', function () { + wp_add_inline_script('acf-input', " + jQuery(function($) { + $('.acf-gallery-add').text('🏞️ Ajouter des photos'); + }); + "); +});