Consentire l'accesso agli editor per i plugin aggiunti
Ho creato un plugin personalizzato che voglio che gli utenti con ruolo Editor possano utilizzare.
Ho trovato un link qui per consentire l'accesso agli editor per modificare i menu consentire agli editor di modificare i menu?
utilizzando questo codice.
$role_object = get_role( 'editor' );
// aggiungi la capacità $cap a questo oggetto ruolo
$role_object->add_cap( 'edit_theme_options' );
Quindi, c'è un modo possibile per consentire agli Editor l'accesso ai miei plugin personalizzati aggiunti?
Dopo una rapida ricerca, ho trovato la risposta qui
Sostituendo tutte le occorrenze di 'manage_options' con 'edit_pages' nei file dei miei Plugin.
Gli editori possono utilizzare i plugin con il capability 'edit_pages'
Ho provato il tuo suggerimento ma non ha funzionato per me.
Puoi fornire maggiori dettagli su come realizzarlo?, per favore
Alejo_Blue
Va bene, hai bisogno di un frammento di codice di esempio per un Plugin su Github? Dovrebbe funzionare
user123451
Per favore aggiungi il seguente codice.
function activate_plugin_name() {
$role = get_role( 'editor' );
$role->add_cap( 'manage_options' ); // capability
}
// Registriamo il nostro hook di attivazione
register_activation_hook( __FILE__, 'activate_plugin_name' );
function deactivate_plugin_name() {
$role = get_role( 'editor' );
$role->remove_cap( 'manage_options' ); // capability
}
// Registriamo il nostro hook di disattivazione
register_deactivation_hook( __FILE__, 'deactivate_plugin_name' );`
Questo è solo un caso d'uso della necessità di attivare un plugin per il ruolo utente "editor". Il plugin si chiama bulk images to posts. Questo plugin è attivo solo per il ruolo admin. Quindi per attivarlo per il ruolo "editor", devi passare attraverso il file "bulk-images-to-posts.php" e cercare la funzione big_create_menu() (responsabile della creazione di un menu nella barra admin laterale) Ora se sostituisci "manage_options" con "edit_pages" vedrai che nel menu admin del ruolo "editor", il plugin diventa attivo. Ancora una volta, questo è solo un esempio di 1 caso d'uso per mostrare l'effetto di "edit_pages"
Ecco uno snippet di codice che mostra questo:
// crea un nuovo menu di primo livello
global $bip_admin_page;
$bip_admin_page = add_menu_page(__('Bulk Images to Posts Uploader','bulk-images-to-posts'), __('Bulk','bulk-images-to-posts'), 'edit_pages', 'bulk-images-to-post','bip_upload_page','dashicons-images-alt2');
// crea pagine di sottomenu
add_submenu_page( 'bulk-images-to-post', __('Bulk Images to Post - Upload','bulk-images-to-posts'), __('Uploader','bulk-images-to-posts'), 'edit_pages', 'bulk-images-to-post');
Grazie Liz Eipe per la tua soluzione, ma purtroppo non ha funzionato per me. Ciò che ha funzionato per me è stato cambiare la 'capability' per tutti gli hook add_menu_page() e add_submenu_page().
Fondamentalmente, il valore di capability che imposti corrisponde all'accesso per diversi tipi e combinazioni di utenti. Puoi visualizzare tutte le capability possibili e il loro accesso qui.
Ho scelto 'publish_posts' come valore, che concede a Super Admin, Admin, Editor e Author l'accesso alla pagina admin che registri con i tuoi hook.
Questo era il mio codice prima:
add_menu_page(
'My Menu Title',
'custom menu',
'administrator', // Solo accesso admin
'myplugin/myplugin-admin.php',
'',
plugins_url( 'myplugin/images/icon.png' ),
3
);
E ora con accesso per Admin, Editor e Author è cambiato in:
add_menu_page(
'My Menu Title',
'custom menu',
'publish_posts', // Accesso Admin, Editor, Author
'myplugin/myplugin-admin.php',
'',
plugins_url( 'myplugin/images/icon.png' ),
3
);
Un'ultima piccola nota; non dimenticare di cambiare questo per tutte le pagine admin del plugin a cui vuoi che altri utenti abbiano accesso, come tutte le pagine dei sottomenu.