Respostas:
Ele não disse nos documentos da API no site de plug-in do Yoast SEO o que ID
era e não tenho uma cópia do Yoast instalada à disposição, mas, de acordo com a yoas-plugin-dir/admin/class-metabox.php
linha 144, a meta_box registrada é;
add_meta_box( 'wpseo_meta', ...etc ); ...
Que está ligado ao add_meta_boxes
gancho na linha 32 do mesmo arquivo,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Claro que você pode obter o ID da própria caixa meta na tela de pós-edição ... 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');
}
}
... em que tipo de postagem é o tipo de postagem que você deseja aplicar também esta restrição, como post
ou um tipo de postagem personalizado um ou mais!
Deve fazer o truque.
atualização: manage_plugins
deveria ter sido activate_plugins
- corrigida.
$post_type
parâmetro var e action argument não é necessário neste caso e não gera aviso / erro. Além disso, se você incluir $post_type
var, precisará definir o tipo de postagem dentro da função em outro lugar que você não executou, para que o usuário o execute para que funcione incorretamente! Nesse caso, é perfeitamente aceitável passar o nome do tipo de postagem, ou seja, 'post'
diretamente para a remove_meta_box
função. Obrigado pela sugestão de qualquer maneira.
$post_type
já está definido e pronto para ser usado pelas add_meta_boxes
funções do gancho de ação, consulte Adam Brown na visualização deste gancho de ação. A utilização $post_type
nesse caso tornará o código independente da post_type
tela de edição, o que significa que removerá a wpseo_meta
meta box de todos os tipos de post em que for encontrado e não retornará nada caso wpseo_meta
não seja encontrado.
post
post_type, motivo pelo qual a solução inicial permitirá um controle granular. No entanto, no caso em que você deseja removê-lo para todos os tipos de postagem, usar o var já definido $post_type
é satisfatório. O que farei é editar minha resposta para incluir seu exemplo adicional usando a $post_type
variável para situações em que alguém pode aplicar isso a todos os post_types registrados.
Tente colar isso em um plugin ou functions.php
arquivo de tema , de acordo com o plugin SEO SEO ( API Docs ), da 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 desativar o plug-in e não gerar erros.
Você pode precisar se conectar init
para que isso funcione corretamente, o que pode ser feito da seguinte maneira:
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');
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 a conexão do metabox WP SEO.
Você pode usar o plug-in Adminimize para ocultar itens dos usuários, dependendo de suas funções. Eu mesmo usei isso para ocultar algumas coisas do Yoast SEO dos clientes e simplificar o back-end.
http://wordpress.org/extend/plugins/adminimize/
Simples de usar adicionando os seletores de css para os itens que você deseja ocultar. Use-o para ocultar as guias Análise de página de SEO (#linkdex)
Bem, existe uma opção de configuração no WordPress SEO da Yoast para desativar a parte avançada das configurações de SEO do WordPress para não administradores. Se você quiser desativar completamente a caixa, poderá usar outros plugins para remover os elementos da página do editor de postagem para não administradores, por exemplo, remover a caixa SEO do WordPress do editor de postagem para não administradores.
yoast_is_toast()
.