Réponses:
Il n'a pas dit dans les documents API sur le site du plugin Yoast SEO ce que ID
c'était et je n'ai pas de copie de Yoast à disposition, mais selon la yoas-plugin-dir/admin/class-metabox.php
ligne 144, la meta_box enregistrée est;
add_meta_box( 'wpseo_meta', ...etc ); ...
Qui est accroché au add_meta_boxes
crochet sur 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 de métadonnées elle-même sur l'écran de post-édition ... Quoi qu'il en soit.
Vous pouvez effectuer les opérations suivantes,
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ù le type de publication est le type de publication auquel vous souhaitez également appliquer cette restriction, comme post
ou un type de publication personnalisé un ou plusieurs!
Devrait faire l'affaire.
mise à jour: manage_plugins
aurait dû être activate_plugins
- modifiée.
$post_type
paramètre d'argument var et action n'est pas requis dans cette instance et ne génère pas d'avis / erreur. De plus, si vous incluez $post_type
var, vous devez définir le type de publication dans la fonction ailleurs, ce que vous n'avez pas fait, donc l'utilisateur l'aurait exécuté pour le faire fonctionner incorrectement! Dans ce cas, il est parfaitement acceptable de passer le nom du type de poste, c'est-à-dire 'post'
directement dans la remove_meta_box
fonction. Merci pour la suggestion quand même.
$post_type
est déjà défini et prêt à être utilisé par les add_meta_boxes
fonctions du crochet d'action, veuillez voir la vue Adam Brown sur ce crochet d'action. L'utilisation $post_type
dans ce cas rendra le code indépendant de l' post_type
écran d'édition, ce qui signifie qu'il supprimera la wpseo_meta
méta-boîte de tous les types de messages sur lesquels il se trouve et ne retournera rien au cas où il wpseo_meta
ne serait pas trouvé.
post
post_type, c'est pourquoi la solution initiale permettra un contrôle granulaire. Cependant, dans le cas où vous souhaitez le supprimer pour tous les types de publication, l'utilisation de la var déjà définie $post_type
est satisfaisante. Ce que je vais faire, c'est éditer ma réponse pour inclure votre exemple supplémentaire en utilisant la $post_type
variable pour les situations où quelqu'un peut vouloir l'appliquer à tous les post_types enregistrés.
Essayez de coller cela dans un plugin ou un functions.php
fichier de thème , conformément au plugin WordPress SEO ( API Docs ), 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 d'essayer de cacher des trucs, vous permettant de désactiver le plugin, et de ne pas jeter d'erreurs.
Vous devrez peut-être vous y connecter init
pour que cela fonctionne correctement, ce qui pourrait être fait 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 le supprimer à l'aide de 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 le 100000 dans add_action, cela garantit que cela est fait après que la métabox WP SEO a été connectée.
Vous pouvez utiliser le plugin Adminimize pour masquer des éléments aux utilisateurs en fonction de leurs rôles. Je l'ai utilisé moi-même pour cacher des éléments SEO Yoast aux clients et simplifier le back-end.
http://wordpress.org/extend/plugins/adminimize/
Assez simple à utiliser en ajoutant les sélecteurs CSS pour les éléments que vous souhaitez masquer. Je l'ai utilisé pour masquer les onglets d'analyse de page SEO (#linkdex)
Eh bien, il existe une option de configuration sur le référencement WordPress par Yoast pour désactiver la partie avancée des paramètres de référencement WordPress pour les non-administrateurs. Si vous souhaitez désactiver complètement la boîte, vous pouvez utiliser d'autres plugins pour supprimer les éléments de la page de l'éditeur de publication pour les non-administrateurs, par exemple, supprimer la boîte SEO WordPress de l'éditeur de publication pour les non-administrateurs.
yoast_is_toast()
.