__('offline', 'metiers-patrimoine-theme'), 'public' => true, 'exclude_from_search' => false, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'label_count' => _n_noop('Unread (%s)', 'Unread (%s)'), )); } add_action('init', 'custom_post_status'); function add_to_post_status_dropdown() { global $post; // Ajoute une option 'offline' au menu déroulant des statuts echo ""; } add_action('post_submitbox_misc_actions', 'add_to_post_status_dropdown'); // Ajouter un filtre pour afficher les posts avec le statut 'offline' add_filter('views_edit-artisans', function ($views) { global $wpdb; $post_type = 'artisans'; $status = 'offline'; // Compte le nombre de posts avec le statut 'offline' $count = $wpdb->get_var($wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = %s AND post_status = %s", $post_type, $status )); if ($count > 0) { $class = (isset($_GET['post_status']) && $_GET['post_status'] === $status) ? 'current' : ''; $views[$status] = sprintf( '%s (%d)', $post_type, $status, $class, __('Offline', 'metiers-patrimoine-theme'), $count ); } return $views; }); // Ajouter un statut personnalisé dans la colonne des statuts, uniquement dans la vue "Tous" function add_custom_post_status($post_states, $post) { // Vérifier si on est dans l'admin et si le post appartient au CPT 'artisans' if ('artisans' === $post->post_type) { global $pagenow; // Vérifier si on est sur la page d'index des articles (Tous les articles) if ('edit.php' === $pagenow && !isset($_GET['post_status'])) { // Ajouter le statut "Publié" si l'article est publié if ('publish' === $post->post_status) { $post_states[] = __('Publié', 'metiers-patrimoine-theme'); // Affiche "Publié" } // Ajouter votre statut personnalisé (ex : "offline") si c'est le cas if ('offline' === get_post_status($post->ID)) { $post_states[] = __('Offline', 'metiers-patrimoine-theme'); // Affiche "En attente" } } } return $post_states; } add_filter('display_post_states', 'add_custom_post_status', 10, 2); /* ---------------------------------------------------------------------- REORDER ADMIN MENU & POST TYPE ORDER ON MENU BAR ------------------------------------------------------------------------*/ /** * Activates the 'menu_order' filter and then hooks into 'menu_order' */ /** * Filters WordPress' default menu order */ function metiers_new_admin_menu_order($menu_order) { // define your new desired menu positions here // for example, move 'upload.php' to position #9 and built-in pages to position #1 $new_positions = array( 'edit.php?post_type=artisans' => 3, 'edit.php?post_type=chantiers' => 4, 'edit.php?post_type=page' => 7, 'upload.php' => 8, 'export_datas' => 9, 'theme-general-settings' => 11, 'rank-math' => 20, ); // helper function to move an element inside an array function metiers_move_element(&$array, $a, $b) { $out = array_splice($array, $a, 1); array_splice($array, $b, 0, $out); } // traverse through the new positions and move // the items if found in the original menu_positions foreach ($new_positions as $value => $new_index) { // write_log($value); if ($current_index = array_search($value, $menu_order)) { metiers_move_element($menu_order, $current_index, $new_index); } } return $menu_order; }; add_action('admin_menu', function () { add_filter('menu_order', 'metiers_new_admin_menu_order'); add_filter('custom_menu_order', '__return_true'); }); function hide_meta_boxes_by_default() { // List of meta boxes to hide by default $hidden_meta_boxes = array( 'post' => array( 'postexcerpt', // Excerpt 'trackbacksdiv', // Trackbacks 'postcustom', // Custom Fields 'commentstatusdiv', // Discussion 'commentsdiv', // Comments 'authordiv', // Author 'slugdiv' // Slug ), 'page' => array( 'postexcerpt', // Excerpt 'trackbacksdiv', // Trackbacks 'postcustom', // Custom Fields 'commentstatusdiv', // Discussion 'commentsdiv', // Comments 'authordiv', // Author 'slugdiv' // Slug ) ); // Get the current user ID $user_id = get_current_user_id(); // Get the hidden meta boxes for the current user $hidden = get_user_meta($user_id, 'metaboxhidden_post', true); // Merge the existing hidden meta boxes with the new ones $hidden = array_unique(array_merge((array) $hidden, $hidden_meta_boxes['post'])); // Update the user meta with the new hidden meta boxes update_user_meta($user_id, 'metaboxhidden_post', $hidden); // Repeat for pages $hidden = get_user_meta($user_id, 'metaboxhidden_page', true); $hidden = array_unique(array_merge((array) $hidden, $hidden_meta_boxes['page'])); update_user_meta($user_id, 'metaboxhidden_page', $hidden); } // Hook the function to the admin_init action // add_action('admin_init', 'hide_meta_boxes_by_default'); function hide_wpml_language_metabox() { // Supprime la meta box "Langue" de WPML dans l'éditeur de post remove_meta_box('icl_div', 'post', 'side'); remove_meta_box('icl_div', 'page', 'side'); // Ajoutez d'autres types de post si nécessaire } // Applique la fonction pour masquer la meta box "Langue" // add_action('admin_menu', 'hide_wpml_language_metabox'); function add_user_role_to_admin_body_class($classes) { $current_user = wp_get_current_user(); if (!empty($current_user->roles)) { foreach ($current_user->roles as $role) { $classes .= ' role-' . $role; $classes .= ' salut fred'; } } return $classes; } // Applique le filtre pour ajouter la classe au corps de l'interface admin add_filter('admin_body_class', 'add_user_role_to_admin_body_class'); function add_custom_taxonomy_menu_item() { add_menu_page( 'Métiers', // Titre de la page dans le navigateur 'Métiers', // Texte à afficher dans le menu 'edit_others_posts', // Capacité requise pour voir le menu 'edit-tags.php?taxonomy=metiers&post_type=artisans', // URL de la taxonomie '', // Pas de fonction de rappel, car nous redirigeons 'dashicons-tag', // Icône (facultatif) 50 // Position dans le menu (facultatif) ); add_menu_page( 'Éléments du batiment', // Titre de la page dans le navigateur 'Éléments du batiment', // Texte à afficher dans le menu 'edit_others_posts', // Capacité requise pour voir le menu 'edit-tags.php?taxonomy=elementsbatiments&post_type=artisans', // URL de la taxonomie '', // Pas de fonction de rappel, car nous redirigeons 'dashicons-tag', // Icône (facultatif) 58 // Position dans le menu (facultatif) ); } // Ajoute l'élément de menu lors de l'initialisation de l'admin add_action('admin_menu', 'add_custom_taxonomy_menu_item'); function add_custom_update_button() { global $post; if ($post->post_status === 'publish') { $update_url = admin_url('post.php?post=' . $post->ID . '&action=edit'); echo 'Mettre à jour l\'article'; } } add_action('post_submitbox_misc_actions', 'add_custom_update_button');