establecer opciones de pantalla específicas de rol en la página de resumen de publicación

2

Necesito configurar diferentes opciones de pantalla (título, autor, categorías ...) en la página de resumen de publicaciones para usuarios no administradores (editor, autor ...) que el usuario no puede modificar por sí mismo.

Ejemplo:

Esta es la vista de administrador y necesito ocultar View Count & SEO columnas para usuarios que no son administradores.

¿Alguien tiene una idea, cómo lograrlo?

    
pregunta Janith Chinthana 17.04.2015 - 09:10

3 respuestas

3

Supongo que necesitas algo como que los editores no pueden ver la columna de categoría o algo así.

Este fragmento de código podría ayudarte:

/** Remove "Options"-Panel, when User is not admin **/
add_filter( 'manage_posts_columns', 'change_columns_for_user', 10, 2 );
function change_columns_for_user( $columns, $post_type ){
    if( 'post' != $post_type )
        return $columns;

    if( current_user_can( 'manage_options' ) )
        return $columns;
    else{
        //Remove Categories
        unset( $columns['categories'] );
        //Remove Tags
        unset( $columns['tags'] );
        //Remove Comments
        unset( $columns['comments'] );
        return $columns;
    }

}

En este fragmento, desarmamos algunas columnas si el usuario no puede usar las opciones. Conoces el panel de opciones en la parte superior: en este caso, ni siquiera aparecerían en este panel ni más.

  

Pero no debería poder cambiar desde el inicio de sesión del usuario en particular.

Si aún desea desactivar el panel de opciones para algunos usuarios, consulte este fragmento de código:

/** Remove "Options"-Panel, when User is not admin **/
add_filter( 'screen_options_show_screen', 'remove_screen_settings', 10, 2 );
function remove_screen_settings( $show_screen, $class ){
    if( 'edit-post' != $class->id )
        return $show_screen;

    if( ! current_user_can( 'manage_options' ) )
        return false;
    else
        return true;
}
    
respondido por el websupporter 17.04.2015 - 12:43
4

Puede utilizar la API de capacidades para configurar de manera condicional las opciones de pantalla:

if ( current_user_can( 'manage_options' ) ) {
    // Administrator, add some options
} else {
    // Other roles, do something different
}
    
respondido por el TheDeadMedic 17.04.2015 - 11:38
3

He aceptado la respuesta de @websupporter de acuerdo con mi pregunta.

Sin embargo, me gustaría agregar algunos códigos a una pregunta específica que he enfrentado anteriormente.

Necesito eliminar las columnas adicionales Yoast SEO plugin de los usuarios que no son administradores. En ese caso específico, Yoast SEO proporciona el enlace para deshabilitar las columnas. Así que usé eso como abajo.

/** Remove SEO columns when User is not admin**/
function remove_page_analysis_for_non_admin(){
    if( current_user_can( 'manage_options' ) )
        return true;
    else{
        return false;
    }
}
add_filter( 'wpseo_use_page_analysis', 'remove_page_analysis_for_non_admin', 10, 2 );

Si alguien desea eliminarlo para todos los usuarios, utilice el siguiente código

add_filter( 'wpseo_use_page_analysis', '__return_false' );
    
respondido por el Janith Chinthana 18.04.2015 - 11:43

Lea otras preguntas en las etiquetas