138 lines
5.2 KiB
PHP
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');
|