it-swarm-pt.tech

WordPress SEO por Yoast: Esconda Meta Caixas em Posts para Não-admins

Eu tenho um site multi-autor e não estou muito confortável para permitir que todos os membros insiram detalhes de SEO nos posts que estão publicando. Eu gostaria que isso fosse visível apenas para o administrador do site. Alguma ideia?

9
Audrius

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

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

Que está ligado ao gancho add_meta_boxes 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_pluginsdeveria ter sidoactivate_plugins- ammended.

19
userabuser

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 após o WP metabox de SEO ter sido enganchado.

4
Kid Slimmer

Tente colar isso em um plugin ou tema functions.php arquivo, como por o WordPress SEO plugin ( 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 ... Isto verifica se a função existe, antes de tentar esconder coisas, permitindo que você desative o plugin, e não jogue erros.

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

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.

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

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

2
noelmcg

Bem, há uma opção de configuração no WordPress SEO por Yoast para desativar a parte avançada das configurações de SEO do WordPress para administradores não. Se você quiser desativar 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 de SEO do WordPress do editor de postagens para não administradores.

0
user36226