Respuestas:
No decía en los documentos de API en el sitio del complemento Yoast SEO qué ID
era y no tengo una copia de Yoast instalada a disposición, pero de acuerdo con la yoas-plugin-dir/admin/class-metabox.php
línea 144, el meta_box registrado es;
add_meta_box( 'wpseo_meta', ...etc ); ...
Que se engancha al add_meta_boxes
gancho en la línea 32 del mismo archivo,
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
Por supuesto, podría obtener la ID del cuadro de meta en la pantalla de edición de publicación ... De todos modos.
Puedes hacer lo siguiente,
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');
}
}
... donde el tipo de publicación es el tipo de publicación que desea aplicar también a esta restricción, como por ejemplo, post
o un tipo de publicación personalizado, uno o más.
Debería hacer el truco.
actualización: manage_plugins
debería haber sido activate_plugins
- enmendado.
$post_type
en este caso no se requiere el parámetro var y argumento de acción y no arroja aviso / error. Además, si incluye $post_type
var, debe definir el tipo de publicación dentro de la función en otro lugar que no hizo, por lo que el usuario habría ejecutado esto para que funcione incorrectamente. En este caso, es perfectamente aceptable pasar el nombre del tipo de publicación, es decir, como 'post'
directamente en la remove_meta_box
función. Gracias por la sugerencia de todos modos.
$post_type
ya está definido y listo para ser utilizado por las add_meta_boxes
funciones del gancho de acción, vea la vista de Adam Brown de este gancho de acción. La utilización $post_type
en este caso hará que el código sea independiente de la post_type
pantalla de edición, lo que significa que eliminará el wpseo_meta
cuadro meta de todos los tipos de publicación en los que se encuentre y no devolverá nada en caso de wpseo_meta
que no se encuentre.
post
post_type, razón por la cual la solución inicial permitirá un control granular. Sin embargo, en el caso de que desee eliminarlo para todos los tipos de publicaciones, el uso de la var ya definida $post_type
es satisfactoria. Lo que haré es editar mi respuesta para incluir su ejemplo adicional usando la $post_type
variable para situaciones en las que alguien quiera aplicar esto a todos los post_types registrados.
Intente pegar esto en un complemento o functions.php
archivo de tema , según el complemento SEO de WordPress ( API Docs ), de Yoast .
if(function_exists('wpseo_use_page_analysis') && !current_user_can('administrator')){
add_filter('wpseo_use_page_analysis', '__return_false');
}
Para evitar cualquier error ... Esto verifica que la función exista, antes de intentar ocultar cosas, lo que le permite desactivar el complemento y no arrojar errores.
Es posible que deba conectarse init
para que esto funcione correctamente, lo que podría hacerse así:
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');
Puede eliminarlo utilizando la función 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 el 100000 en add_action, esto se asegura de que esto se haga después de que se haya conectado el metabox WP SEO.
Puede usar el complemento Administrar para ocultar elementos de los usuarios en función de sus roles. Lo he usado yo mismo para ocultar algunas cosas de Yoast SEO de los clientes y simplificar el back-end.
http://wordpress.org/extend/plugins/adminimize/
Es bastante fácil de usar agregando los selectores CSS para los elementos que desea ocultar. Lo he usado para ocultar las pestañas de Análisis de página SEO (#linkdex)
Bueno, hay una opción de configuración en el SEO de WordPress de Yoast para deshabilitar la parte avanzada de la configuración de SEO de WordPress para los no administradores. Si desea deshabilitar completamente el cuadro, puede usar otros complementos para eliminar elementos de la página del editor de publicaciones para no administradores, por ejemplo, eliminar el cuadro SEO de WordPress del editor de publicaciones para no administradores.
yoast_is_toast()
.