it-swarm.com.de

WordPress SEO von Yoast: Verstecke Meta-Boxen in Posts für Nicht-Administratoren

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?

9
Audrius

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_pluginssollteactivate_plugins- geändert worden sein.

19
userabuser

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.

4
Kid Slimmer

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');
4
Michael Ecklund

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)

2
noelmcg

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.

0
user36226