WordPress SEO por Yoast: esconda Meta Boxes em postagens para não administradores

9

Tenho um website de vários autores e não me sinto muito à vontade para permitir que todos os membros insiram detalhes de SEO nas publicações que publicam. Eu gostaria que isso fosse visível apenas para o administrador do site. Alguma idéia?

    
por Audrius 29.10.2012 / 21:21

5 respostas

19

Não foi dito na documentação da API no site de plugins do Yoast SEO qual era o ID e não tenho uma cópia do Yoast instalada à disposição, mas de acordo com yoas-plugin-dir/admin/class-metabox.php linha 144, meta_box registrado é;

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

Que está ligado ao add_meta_boxes hook na linha 32 do mesmo arquivo,

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

É claro que você poderia obter o ID da própria caixa meta na tela de edição de postagem ... Enfim.

Você pode fazer o seguinte,

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

... onde tipo de postagem é o tipo de postagem que você deseja aplicar essa restrição também, como post ou uma postagem personalizada digite um ou mais!

Deve fazer o truque.

update: manage_plugins deveria ter sido activate_plugins - alterado.

    
por userabuser 29.10.2012 / 22:29
5

Você pode removê-lo usando a função 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' );
}

Observe o 100000 no add_action, isso garante que isso seja feito depois que o metabox do WP SEO tiver sido enganchado.

    
por Kid Slimmer 16.03.2013 / 22:25
4

Tente colá-lo em um arquivo de plug-in ou tema functions.php , de acordo com o plug-in do WordPress SEO ( API Docs ), por Yoast .

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

Para evitar erros ... Isso verifica se a função existe, antes de tentar ocultar coisas, permitindo que você desative o plug-in e não jogue erros.

Pode ser necessário conectar-se a init para que isso funcione corretamente, o que poderia ser feito assim:

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');
    
por Michael Ecklund 30.10.2012 / 02:06
2

Você pode usar o plugin Adminimize para ocultar itens de usuários, dependendo de suas funções. Usei isso para esconder algumas coisas do Yoast SEO dos clientes e simplificar o back-end.

enlace

Muito simples de usar, adicionando os seletores css para os itens que você deseja ocultar. Usei-o para ocultar as guias Análise de página SEO (#linkdex)

    
por noelmcg 06.11.2012 / 12:18
0

Bem, há uma opção de configuração no WordPress SEO by Yoast para desativar a parte avançada das configurações do WordPress SEO para administradores não. Se você quiser desabilitar completamente a caixa, poderá usar outros plug-ins para remover os elementos da página do editor de postagem para administradores que não são administradores, por exemplo, removendo a caixa do WordPress SEO do editor de postagem para administradores que não são.

    
por user36226 05.08.2013 / 11:58