WordPress SEO by Yoast: Ocultar cajas de metadatos en publicaciones para no administradores

9

Tengo un sitio web de varios autores y no me siento cómodo al permitir que todos los miembros ingresen los detalles de SEO en las publicaciones que están publicando. Me gustaría que esto fuera visible solo para el Administrador del sitio web. ¿Alguna idea?

    
pregunta Audrius 29.10.2012 - 21:21

5 respuestas

19

En los documentos de la API en el sitio del plugin de SEO de Yoast no se mencionó qué era ID y no tengo una copia de Yoast instalada, pero de acuerdo con yoas-plugin-dir/admin/class-metabox.php line 144, la meta_box registrado es;

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

Que se engancha en add_meta_boxes hook en la línea 32 del mismo archivo,

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

Por supuesto, puede obtener la ID desde el 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 tipo de publicación es el tipo de publicación al que deseas aplicar esta restricción, como post o una publicación personalizada tipo uno o más.

Debería hacer el truco.

actualización: manage_plugins debería haber sido activate_plugins - enmendado.

    
respondido por el userabuser 29.10.2012 - 22:29
5

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 de WP SEO.

    
respondido por el Kid Slimmer 16.03.2013 - 22:25
4

Intente pegar esto en un complemento o archivo de tema functions.php , según el 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 cualquier error ... Esto verifica que la función exista, antes de intentar ocultar cosas, permitiéndole desactivar el complemento y no lanzar errores.

Es posible que tengas que enlazar con 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');
    
respondido por el Michael Ecklund 30.10.2012 - 02:06
2

Puede usar el complemento Adminimize para ocultar elementos de los usuarios según sus roles. Lo he usado para ocultar algunas cosas de Yoast SEO de los clientes y simplificar el back-end.

enlace

Bastante sencillo de usar al agregar los selectores de CSS para los elementos que desea ocultar. Lo he usado para ocultar las pestañas de Análisis de páginas SEO (#linkdex)

    
respondido por el noelmcg 06.11.2012 - 12:18
0

Bueno, hay una opción de configuración en WordPress SEO by Yoast para deshabilitar la parte avanzada de la configuración de WordPress SEO para no administradores. Si desea deshabilitar por completo la casilla, puede usar otros complementos para eliminar elementos de la página del editor de publicaciones para no administradores, por ejemplo. eliminando el cuadro de WordPress SEO del editor de publicaciones para no administradores.

    
respondido por el user36226 05.08.2013 - 11:58

Lea otras preguntas en las etiquetas