Risposte:
Nei documenti API sul sito del plug-in Yoast SEO non ID
era indicato quale fosse e non ho una copia di Yoast a disposizione, ma secondo la yoas-plugin-dir/admin/class-metabox.php
riga 144, il meta_box registrato è;
add_meta_box( 'wpseo_meta', ...etc ); ...
Che è collegato add_meta_boxes
all'hook sulla linea 32 dello stesso file,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Ovviamente potresti ottenere l'ID dal meta box stesso nella schermata di modifica post ... Comunque.
Puoi fare quanto segue,
add_action('add_meta_boxes', 'yoast_is_toast', 99);
function yoast_is_toast(){
//capability of 'manage_plugins' equals admin, therefore if NOT administrator
//hide the meta box from all other roles on the following 'post_type'
//such as post, page, custom_post_type, etc
if (!current_user_can('activate_plugins')) {
remove_meta_box('wpseo_meta', 'post_type', 'normal');
}
}
... dove tipo di post è il tipo di post che si desidera applicare anche questa limitazione, come post
o un tipo di post personalizzato uno o più!
Dovrebbe fare il trucco.
aggiornamento: manage_plugins
avrebbe dovuto essere activate_plugins
- ammended.
$post_type
parametro var e action topic non è richiesto in questa istanza e non genera avviso / errore. Inoltre se includi $post_type
var devi definire il tipo di post all'interno della funzione altrove che non hai fatto, quindi l'utente avrebbe eseguito questo per farlo funzionare in modo errato! In questo caso è perfettamente accettabile passare il nome del tipo di post, ovvero 'post'
direttamente nella remove_meta_box
funzione. Grazie comunque per il suggerimento.
$post_type
è già definito e pronto per essere utilizzato dalle add_meta_boxes
funzioni di hook di azione, si prega di consultare Adam Brown come vista di questo hook di azione. L'utilizzo $post_type
in questo caso renderà il codice indipendente dalla post_type
schermata di modifica, il che significa che rimuoverà la wpseo_meta
meta-box da tutti i tipi di post su cui si trova e non restituirà nulla nel caso in cui wpseo_meta
non venga trovato.
post
post_type, motivo per cui la soluzione iniziale consentirà un controllo granulare. Tuttavia, nel caso in cui si desidera rimuoverlo per tutti i tipi di post, l'utilizzo della var già definita $post_type
è soddisfacente. Quello che farò è modificare la mia risposta per includere il tuo esempio aggiuntivo usando la $post_type
variabile per le situazioni in cui qualcuno potrebbe voler applicare questo a tutti i post_types registrati.
Prova a incollarlo in un plug-in o in un functions.php
file di temi , come per il plug-in SEO di WordPress ( Documenti API ), di Yoast .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Per evitare errori ... Questo controlla per accertarsi che la funzione esista, prima di tentare di nascondere cose, consentendo di disattivare il plugin e non generare errori.
Potrebbe essere necessario collegarsi init
affinché funzioni correttamente, cosa che potrebbe essere fatta in questo modo:
function wpse_init(){
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
}
add_action('init', 'wpse_init');
Puoi rimuoverlo usando la funzione remove_meta_box .
if ( ! current_user_can( 'edit_pages' ) ) {
add_action( 'add_meta_boxes', 'my_remove_wp_seo_meta_box', 100000 );
}
function my_remove_wp_seo_meta_box() {
remove_meta_box( 'wpseo_meta', 'post', 'normal' );
}
Notare il 100000 in add_action, questo si assicura che ciò avvenga dopo che il metabox WP SEO è stato collegato.
È possibile utilizzare il plug-in Adminimize per nascondere gli elementi agli utenti in base al loro ruolo. L'ho usato io stesso per nascondere alcune cose Yoast SEO dai clienti e semplificare il back-end.
http://wordpress.org/extend/plugins/adminimize/
Abbastanza semplice da usare aggiungendo i selettori CSS per gli elementi che si desidera nascondere. L'ho usato per nascondere le schede Analisi Pagina SEO (#linkdex)
Bene, c'è un'opzione di impostazione su SEO per WordPress di Yoast per disabilitare la parte avanzata delle impostazioni SEO di WordPress per i non amministratori. Se si desidera disabilitare completamente la casella, è possibile utilizzare altri plug-in per rimuovere gli elementi della pagina dell'editor di post per i non amministratori, ad esempio rimuovendo la casella SEO di WordPress dall'editor di post per i non amministratori.
yoast_is_toast()
.