J'ai un site Web à auteurs multiples et je ne suis pas très à l'aise d'autoriser tous les membres à saisir les détails du référencement dans les messages qu'ils publient. J'aimerais que cela ne soit visible que par l'administrateur du site. Des idées?
Il n'était pas indiqué dans la documentation de l'API sur le site du plug-in Yoast SEO en quoi consistait la ID
et je n'ai pas de copie de Yoast à la disposition, mais d'après la yoas-plugin-dir/admin/class-metabox.php
ligne 144, la meta_box enregistrée est;
add_meta_box( 'wpseo_meta', ...etc ); ...
Ce qui est accroché au crochet add_meta_boxes
à la ligne 32 du même fichier,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Bien sûr, vous pouvez obtenir l'ID de la boîte à méta elle-même sur l'écran d'édition postérieure ... Quoi qu'il en soit.
Vous pouvez faire ce qui suit,
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');
}
}
... où type de message est le type de message auquel vous souhaitez appliquer cette restriction également, par exemple post
ou un type de message personnalisé, un ou plusieurs!
Devrait faire l'affaire.
update:manage_plugins
aurait dû êtreactivate_plugins
- ammended.
Vous pouvez le supprimer en utilisant la fonction 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' );
}
Notez que 100000 dans add_action, cela s'assure que cela est fait après que la métabox WP SEO a été connectée.
Essayez de coller ceci dans un fichier functions.php
de plugin ou de thème, selon le plugin WordPress SEO ( Docs API ), par Yoast .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Pour éviter toute erreur ... Ceci vérifie que la fonction existe avant de tenter de masquer des éléments, ce qui vous permet de désactiver le plug-in et de ne pas générer d'erreurs.
Vous devrez peut-être vous accrocher à init
pour que cela fonctionne correctement, comme ceci:
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');
Vous pouvez utiliser le plug-in Adminimize pour masquer des éléments aux utilisateurs en fonction de leurs rôles. J'ai moi-même utilisé cela pour masquer certains éléments de Yoast SEO aux clients et simplifier le back-end.
http://wordpress.org/extend/plugins/adminimize/
C'est assez simple à utiliser en ajoutant les sélecteurs CSS pour les éléments que vous voulez masquer. L'ont utilisé pour masquer les onglets d'analyse de page SEO (#linkdex)
Eh bien, il existe une option de réglage dans WordPress SEO de Yoast pour désactiver la partie avancée des paramètres de WordPress SEO pour les non-administrateurs. Si vous souhaitez désactiver complètement la boîte, vous pouvez utiliser d'autres plug-ins pour supprimer les éléments de la page d'édition de l'éditeur pour les non administrateurs, par exemple. supprimer la boîte WordPress SEO de l'éditeur de publication pour les non-administrateurs.