Metiers_du_patrimoine_theme/includes/roles.php
2025-04-24 16:15:21 +02:00

138 lines
5.2 KiB
PHP

<?php
/* -----------------------------------------------------------
Création du rôle conseiller
-----------------------------------------------------------*/
function create_conseiller_role()
{
// Récupérer les capacités du rôle author
$author_role = get_role('editor');
$capabilities = $author_role->capabilities;
$capabilities['export_artisans_datas'] = false;
$capabilities['edit_others_posts'] = true;
$capabilities['publish_posts'] = true;
$capabilities['read'] = true;
$capabilities['upload_files'] = true;
// Désactiver les capacités de suppression
$capabilities['delete_posts'] = false;
$capabilities['delete_published_posts'] = false;
$capabilities['delete_others_posts'] = false;
$capabilities['delete_private_posts'] = false;
// Désactiver uniquement l'accès au post type "page" standard
// $capabilities['edit_pages'] = false;
// $capabilities['publish_pages'] = false;
$capabilities['edit_others_pages'] = false;
$capabilities['edit_published_pages'] = false;
$capabilities['delete_pages'] = false;
$capabilities['delete_others_pages'] = false;
$capabilities['delete_published_pages'] = false;
$capabilities['delete_private_pages'] = false;
$capabilities['edit_private_pages'] = false;
$capabilities['read_private_pages'] = false;
// Capacités WPML pour la traduction
$capabilities['wpml_manage_translations'] = true;
$capabilities['wpml_manage_string_translation'] = true;
$capabilities['wpml_manage_woocommerce_translation'] = true;
$capabilities['wpml_manage_navigation'] = true;
$capabilities['wpml_manage_media_translation'] = true;
$capabilities['wpml_manage_taxonomy_translation'] = true;
$capabilities['wpml_manage_languages'] = true;
$capabilities['wpml_manage_theme_and_plugin_strings'] = true;
$capabilities['wpml_manage_translation_management'] = true;
$capabilities['wpml_manage_translation_priorities'] = true;
$capabilities['wpml_manage_translation_services'] = true;
$capabilities['wpml_manage_translation_workflows'] = true;
$capabilities['wpml_manage_translation_jobs'] = true;
$capabilities['wpml_manage_translation_assignments'] = true;
add_role('conseiller', 'Conseiller', $capabilities);
}
/* -----------------------------------------------------------
Initialisation des rôles personnalisés
-----------------------------------------------------------*/
function init_custom_roles()
{
if (!get_role('conseiller')) {
create_conseiller_role();
}
}
add_action('init', 'init_custom_roles');
/* -----------------------------------------------------------
Supprimer et recréer le rôle conseiller
-----------------------------------------------------------*/
function force_recreate_conseiller_role()
{
remove_role('conseiller');
create_conseiller_role();
}
/* -----------------------------------------------------------
Forcer la recréation du rôle conseiller (à utiliser une seule fois)
-----------------------------------------------------------*/
// Décommentez la ligne suivante pour forcer la recréation du rôle, puis commentez-la à nouveau
// add_action('init', 'force_recreate_conseiller_role', 30);
/* -----------------------------------------------------------
Ajouter la capacité export_artisans_datas aux administrateurs et éditeurs
-----------------------------------------------------------*/
function add_export_artisans_capability()
{
// Ajouter la capacité à l'administrateur
$admin_role = get_role('administrator');
if ($admin_role && !$admin_role->has_cap('export_artisans_datas')) {
$admin_role->add_cap('export_artisans_datas');
}
// Ajouter la capacité à l'éditeur
$editor_role = get_role('editor');
if ($editor_role && !$editor_role->has_cap('export_artisans_datas')) {
$editor_role->add_cap('export_artisans_datas');
}
}
add_action('init', 'add_export_artisans_capability');
/* -----------------------------------------------------------
Masquer les widgets du tableau de bord pour le rôle conseiller
-----------------------------------------------------------*/
function hide_dashboard_widgets_for_conseiller()
{
$user = wp_get_current_user();
if (in_array('conseiller', (array) $user->roles)) {
remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
remove_meta_box('dashboard_activity', 'dashboard', 'normal');
remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
remove_meta_box('dashboard_primary', 'dashboard', 'side');
remove_meta_box('dashboard_secondary', 'dashboard', 'side');
remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
remove_meta_box('dashboard_site_health', 'dashboard', 'normal');
}
}
add_action('wp_dashboard_setup', 'hide_dashboard_widgets_for_conseiller');
function apply_admin_color_to_all_users()
{
$users = get_users();
foreach ($users as $user) {
wp_update_user([
'ID' => $user->ID,
'admin_color' => 'metier_patrimoine' // Thème personnalisé Metiers du patrimoine
]);
}
}
add_action('after_switch_theme', 'apply_admin_color_to_all_users');