In den API-Dokumenten auf der Yoast SEO-Plugin-Site wurde nicht angegeben, was das ID
war, und ich habe keine Kopie von Yoast zur Verfügung, aber gemäß yoas-plugin-dir/admin/class-metabox.php
Zeile 144 ist die registrierte meta_box;
add_meta_box( 'wpseo_meta', ...etc ); ...
Welches an add_meta_boxes
Haken in Zeile 32 der gleichen Datei angeschlossen ist,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Natürlich können Sie die ID aus der Meta-Box selbst auf dem 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, für den Sie diese Einschränkung ebenfalls anwenden möchten, z. B. post
ein benutzerdefinierter Beitragstyp, einen oder mehrere!
Sollte den Trick machen.
Update: manage_plugins
hätte activate_plugins
geändert werden sollen.
yoast_is_toast()
.$post_type
Parameter var und action argument ist in dieser Instanz nicht erforderlich und löst keine Benachrichtigung / Fehler aus. Wenn Sie$post_type
var einschließen , müssen Sie den Beitragstyp in der Funktion an einer anderen Stelle definieren, was Sie nicht getan haben. Der Benutzer hätte dies also ausgeführt, damit er nicht ordnungsgemäß funktioniert. In diesem Fall ist es durchaus akzeptabel, den Namen des Beitragstyps, dh als'post'
direkt in dieremove_meta_box
Funktion, zu übergeben. Trotzdem danke für den Vorschlag.$post_type
bereits definiert und bereit, von denadd_meta_boxes
Action-Hook-Funktionen verwendet zu werden. Weitere Informationen finden Sie in der Ansicht von Adam Brown über diesen Action-Hook. Wenn Sie$post_type
in diesem Fall verwenden, wird der Code unabhängig vompost_type
Bearbeitungsbildschirm. Dies bedeutet, dass diewpseo_meta
Meta-Box aus allen Beitragstypen entfernt wird, auf denen sie gefunden wurde, und nichts zurückgegeben wird, falls siewpseo_meta
nicht gefunden wird.post
post_type entfernen, weshalb die ursprüngliche Lösung eine granulare Steuerung ermöglicht. Wenn Sie es jedoch für alle Beitragstypen entfernen möchten, ist die Verwendung der bereits definierten Variable$post_type
zufriedenstellend. Ich werde meine Antwort so bearbeiten, dass sie Ihr zusätzliches Beispiel enthält. Verwenden Sie dazu die$post_type
Variable für Situationen, in denen jemand dies auf alle registrierten post_types anwenden möchte.Versuchen Sie, dies
functions.php
gemäß dem WordPress SEO-Plugin ( API Docs ) von Yoast in eine Plugin- oder Themendatei einzufügen .Um Fehler zu vermeiden ... Hiermit wird überprüft, ob die Funktion vorhanden ist, bevor versucht wird, Inhalte auszublenden. So können Sie das Plugin deaktivieren und keine Fehler auslösen.
Möglicherweise müssen Sie sich einhängen,
init
damit dies ordnungsgemäß funktioniert. Dies kann folgendermaßen erfolgen:quelle
Sie können es mit dem entfernen Funktion remove_meta_box .
Beachten Sie die 100000 in der add_action. Dadurch wird sichergestellt, dass dies erfolgt, nachdem die WP SEO-Metabox eingebunden wurde.
quelle
Sie können das Adminimize-Plugin verwenden, um Elemente abhängig von ihren Rollen vor Benutzern auszublenden. Ich habe dies selbst verwendet, um einige Yoast-SEO-Dinge vor Kunden zu verbergen und das Back-End zu vereinfachen.
http://wordpress.org/extend/plugins/adminimize/
Ziemlich einfach zu verwenden, indem Sie die CSS-Selektoren für die Elemente hinzufügen, die Sie ausblenden möchten. Habe es verwendet, um die Registerkarten für die SEO-Seitenanalyse (#linkdex) auszublenden.
quelle
Nun, es gibt eine Einstellungsoption für 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. B. das Entfernen der WordPress-SEO-Box aus dem Post-Editor für Nicht-Administratoren.
quelle