it-swarm-eu.dev

WordPress SEO by Yoast: Skrýt Meta boxy v příspěvcích pro Non-admins

Mám webovou stránku pro více autorů a nejsem moc pohodlný pro to, aby všichni členové mohli zadávat detaily SEO do příspěvků, které publikují. Chtěl bych, aby to bylo viditelné pouze pro správce webu. Nějaké nápady?

9
Audrius

To neřeklo v API dokumentech na Yoast SEO plugin místě co ID byl a já nemám kopii Yoast na instalované k dispozici, ale podle yoas-plugin-dir/admin/class-metabox.php řádek 144, meta_box registrován je;

add_meta_box( 'wpseo_meta', ...etc ); ...

Který je závislý na háku add_meta_boxes na řádku 32 stejného souboru,

add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );

Samozřejmě můžete dostat ID z meta box sám na post edit obrazovky ... Každopádně.

Můžete udělat následující,

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');
    }
}

... kde typ příspěvku je typ příspěvku, který chcete použít i toto omezení, jako například post nebo vlastní typ příspěvku jeden nebo více!

Měl by to udělat trik.

update:manage_pluginsmělo býtactivate_plugins- pozměněno.

19
userabuser

Můžete jej odebrat pomocí funkce 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' );
}

Všimněte si, že 100000 v add_action, což zajišťuje, že se to provede poté, co byl připojen metabox WP SEO.

4
Kid Slimmer

Zkuste to vložit do pluginu nebo tématu functions.php souboru, podle WordPress SEO pluginu ( API Docs ), podle Yoast .

if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
    add_filter('wpseo_use_page_analysis', '__return_false');
}

Chcete-li se vyhnout chybám ... Toto zkontroluje, zda funkce existuje, než se pokusíte skrýt věci, což vám umožní deaktivovat plugin a nehodit chyby.

Možná budete muset zavést do init, aby to správně fungovalo, což by mohlo být provedeno takto:

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

Pomocí pluginu Adminimize můžete skrýt položky od uživatelů v závislosti na jejich rolích. Použili jsem to sám skrýt některé Yoast SEO věci od klientů a zjednodušení zadní konec.

http://wordpress.org/extend/plugins/adminimize/

Docela přímočaré použít přidáním css voliče pro položky, které chcete skrýt. Použili jej skrýt karty Analýza stránky SEO (#linkdex)

2
noelmcg

No tam je možnost nastavení na WordPress SEO Yoast pro zakázání pokročilé části WordPress SEO nastavení pro non admins. Pokud chcete krabici zcela vypnout, můžete použít jiné pluginy k odstranění prvků stránky editoru příspěvků pro neadministry, např. odstranění WordPress SEO box z post editoru pro non admins.

0
user36226