-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusers.php
199 lines (150 loc) · 4.67 KB
/
users.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<?php
// Masquer la barre admin pour les subscribers:
// source: http://wpbeg.in/Hg3djT
function kino_remove_admin_bar() {
if ( !current_user_can('edit_pages') ) {
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'kino_remove_admin_bar');
/**
* Redirect back to homepage and not allow access to
* WP admin for Subscribers.
*/
function kino_redirect_admin(){
if ( ! defined('DOING_AJAX') && current_user_can('subscriber') ) {
wp_redirect( site_url() );
exit;
}
}
// add_action( 'admin_init', 'kino_redirect_admin' );
// NOTE: cela empêche de changer l'adresse email!
// Dashboard: remove Visual composer for subscribers
function kino_remove_menus() {
if ( current_user_can( 'subscriber' ) ) {
remove_menu_page( 'index.php' );
remove_menu_page( 'admin.php?page=vc-welcome' );
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
}
}
add_action( 'admin_menu', 'kino_remove_menus', 999);
function kino_subscriber_hide_groups() {
if ( current_user_can( 'subscriber' ) ) {
remove_action( 'show_user_profile', 'edit_user_relationships', 999 );
remove_action( 'edit_user_profile', 'edit_user_relationships', 999 );
}
}
add_action( 'init', 'kino_subscriber_hide_groups', 0 );
/*
* Kino Add Capps
* Donner plus de capacités aux editeurs
Note:
Ces réglages sont enregistrés en base de donnée,
il suffit donc de les exécuter une seule fois.
Voir https://codex.wordpress.org/Function_Reference/add_cap
*/
function kino_add_caps() {
$role = get_role( 'editor' );
$role->add_cap( 'list_users' );
$role->add_cap( 'edit_users' );
}
add_action( 'admin_init', 'kino_add_caps');
/* ajoute le droit d'upload pour les contributeurs */
function kino_add_caps_2() {
$role = get_role( 'contributor' );
$role->add_cap( 'upload_files' );
}
add_action( 'admin_init', 'kino_add_caps_2');
/*
* Kino Admin View
* Test if user is either:
* a) Admin or Editor
* b) Owner of currently displayed page
* Returns true or false.
* Used on BP profile pages.
*/
function kino_admin_view() {
$admin_view = false;
if ( is_user_logged_in() ) {
if ( current_user_can( 'publish_pages' ) ) {
$admin_view = true;
}
if ( function_exists( 'bp_is_my_profile' ) ) {
if ( bp_is_my_profile() ) {
$admin_view = true;
}
}
}
return $admin_view;
}
// remove Visual Composer Menu
function kino_vc_admin_css() {
if ( current_user_can( 'subscriber' ) ) {
echo '<style>
#toplevel_page_vc-welcome,
tr.user-admin-bar-front-wrap,
tr.user-url-wrap,
tr.user-description-wrap,
#profile-nav
{
display: none;
}
div#profile-page.wrap form#your-profile {
padding-top: 0px;
}
</style>';
}
}
add_action('admin_head', 'kino_vc_admin_css');
// WP User Groups
// ***********************
// we don't need Types taxonomy, groups is enough
function kino_remove_stuff() {
remove_action( 'init', 'wp_register_default_user_type_taxonomy' );
}
add_action( 'init' , 'kino_remove_stuff' , 0 );
// ajouter taxonomie "Logements"
function kino_register_logement_taxonomy() {
if (class_exists('WP_User_Taxonomy')) {
// Logements
new WP_User_Taxonomy( 'user-logement', 'users/logement', array(
'singular' => 'Logement',
'plural' => 'Logements'
) );
// Competences
new WP_User_Taxonomy( 'user-competences', 'users/competences', array(
'singular' => 'Compétence',
'plural' => 'Compétences'
) );
// Comptabilité
new WP_User_Taxonomy( 'user-compta', 'users/compta', array(
'singular' => 'Compta',
'plural' => 'Compta'
) );
}
}
add_action( 'init', 'kino_register_logement_taxonomy', 20 );
/*
* Kino Limit Group Access
**************************
Cette fonction a pour objectif d'empêcher les membres de modifier leur propre statut.
En effet, par défaut, les groupes sont accessibles sous
https://kinogeneva.ch/wp-admin/profile.php
Voir:
https://wordpress.org/support/topic/how-to-hide-user-groups-from-subscribers/
Notes:
On définit l'accès à ces réglages avec une capacité WP,
cf https://codex.wordpress.org/Roles_and_Capabilities
Exemples:
list_users = administrateurs uniquement
edit_pages = administrateurs et éditeurs
La priorité ne doit pas être inférieure à celle de l'enregistrement des taxonomies (20), sinon ça n'aura aucun effet.
*/
function kino_limit_group_access() {
global $wp_taxonomies;
$wp_taxonomies['user-group']->cap->assign_terms = 'edit_pages';
$wp_taxonomies['user-logement']->cap->assign_terms = 'edit_pages';
$wp_taxonomies['user-competences']->cap->assign_terms = 'edit_pages';
$wp_taxonomies['user-compta']->cap->assign_terms = 'edit_pages';
}
add_action('init','kino_limit_group_access', 20);