Ich habe eine Website mit mehreren Autoren und es ist mir nicht sehr angenehm, allen Mitgliedern die Eingabe von SEO-Details in die von ihnen veröffentlichten Posts zu gestatten. Ich möchte, dass dies nur für den Administrator der Website sichtbar ist. Irgendwelche Ideen?
In den API-Dokumenten auf der Yoast-SEO-Plug-in-Site wurde nicht angegeben, was die ID
war, und ich habe keine installierte Kopie von Yoast zur Verfügung, aber laut yoas-plugin-dir/admin/class-metabox.php
Zeile 144 ist die meta_box registriert.
add_meta_box( 'wpseo_meta', ...etc ); ...
Welches ist auf add_meta_boxes
hook in Zeile 32 der gleichen Datei eingehängt,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Natürlich können Sie die ID auch aus der Meta-Box selbst im Post-Edit-Bildschirm abrufen ... Wie auch immer.
Sie können Folgendes tun:
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');
}
}
... wobei der Beitragstyp der Beitragstyp ist, auf den Sie diese Einschränkung auch anwenden möchten, z. B. post
oder ein benutzerdefinierter Beitragstyp eins oder mehrere!
Sollte den Trick machen.
update:manage_plugins
sollteactivate_plugins
- geändert worden sein.
Sie können es mit der Funktion remove_meta_box entfernen.
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' );
}
Beachten Sie die 100000 in der add_action, dies stellt sicher, dass dies erfolgt, nachdem die WP SEO-Metabox angehängt wurde.
Versuchen Sie, dies in eine functions.php
-Datei eines Plugins oder Themas einzufügen, wie im WordPress-SEO-Plugin ( API-Dokumente ) von Yoast angegeben.
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Um Fehler zu vermeiden ... Dies überprüft, ob die Funktion vorhanden ist, bevor versucht wird, Inhalte auszublenden, sodass Sie das Plugin deaktivieren und keine Fehler auslösen können.
Möglicherweise müssen Sie sich in init
einbinden, damit dies ordnungsgemäß funktioniert. Dies kann folgendermaßen geschehen:
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');
Sie können das Adminimize-Plugin verwenden, um Elemente abhängig von ihren Rollen vor Benutzern auszublenden. Habe dies selbst genutzt, um einige Yoast-SEO-Inhalte vor Kunden zu verbergen und das Backend zu vereinfachen.
http://wordpress.org/extend/plugins/adminimize/
Ziemlich einfach zu bedienen, indem Sie die CSS-Selektoren für die Elemente hinzufügen, die Sie ausblenden möchten. Habe es benutzt, um die Registerkarten der SEO-Seitenanalyse auszublenden (#linkdex)
Nun, es gibt eine Einstellungsoption für die WordPress-SEO von Yoast, mit der der erweiterte Teil der WordPress-SEO-Einstellungen für Nicht-Administratoren deaktiviert werden kann. Wenn Sie die Box vollständig deaktivieren möchten, können Sie andere Plugins verwenden, um Seitenelemente des Post-Editors für Nicht-Administratoren zu entfernen, z. Entfernen der WordPress-SEO-Box aus dem Post-Editor für Nicht-Administratoren.