¿Cómo deshabilito las notificaciones de actualización del panel para los suscriptores?

2

Para los usuarios registrados en mi blog, si hacen clic en el panel, reciben una alerta que sugiere que le digan al administrador del sitio (yo) que la nueva versión de WordPress está disponible.

Todo lo que quiero es ocultar las alertas del panel de los suscriptores. ¿Dónde puedo encontrar el código para cambiar esto?

Encontré un sitio aquí que sugiere que estoy buscando el código:

add_action('admin_head','addDashboardAlert');

Pero no sé dónde buscarlo.

ACTUALIZACIÓN

Encontré un código más relevante para condicionar las alertas al rol del usuario, aquí :

if (!current_user_can('delete_posts')) {
    
pregunta bozdoz 11.10.2012 - 23:03

4 respuestas

2

puedes incluir algunos css personalizados en tus funciones.php que ocultan el elemento update_nag (notificaciones) dependiendo de la capacidad del usuario:

add_action('admin_head','admin_css');
function admin_css()
{
if(!current_user_can('administrator'))//not and admin
{
    echo '<style>';
        echo '.update_nag{display:none}';
        echo '</style>';
    }
}
    
respondido por el Clearmedia 12.10.2012 - 04:12
9

Actualizando esta respuesta el código original a continuación eliminará la pantalla molesta, pero hará ping al servidor para obtener actualizaciones en cada carga, gracias a @ El Yobo, consulte la actualización a continuación.

Esto deshabilitará las actualizaciones principales y la pantalla molesta para todos, excepto los superadmins.

add_action( 'after_setup_theme', 'remove_core_updates' );
function remove_core_updates()
{
    if ( ! current_user_can( 'update_core' ) ) {
        return;
    }
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', '__return_null' );
    add_filter( 'pre_site_transient_update_core', '__return_null' ); 
}  

Para deshabilitar todas las notificaciones de complementos;

remove_action( 'load-update-core.php', 'wp_update_plugins' );
add_filter( 'pre_site_transient_update_plugins', '__return_null' );

Para eliminar un complemento específico, puede intentar esto, pero no va a funcionar al 100% según el complemento;

function ya_remove_plugin_update($value) {
     $plugin_relative_path = "plugin_relative_path"; // change this to your plugin
     unset( $value->response[ $plugin_relative_path ] );
     return $value;
}
add_filter( 'site_transient_update_plugins', 'ya_remove_plugin_update' );

Actualizado

Esto deshabilita las actualizaciones completamente (no puedo hacer que funcione en función de los roles de los usuarios) Y deja de buscar las actualizaciones (lanzará una advertencia de PHP no estoy seguro de cómo solucionarlo sin alterar el núcleo). / p>

function remove_core_updates(){

        global $wp_version;
        return (object) array(
            'last_checked' => time(),
            'version_checked' => $wp_version,
            );
}
add_filter('pre_site_transient_update_core', 'remove_core_updates');
add_filter('pre_site_transient_update_plugins', 'remove_core_updates');
add_filter('pre_site_transient_update_themes', 'remove_core_updates');
    
respondido por el Wyck 12.10.2012 - 00:08
1

No logré trabajar con los scripts anteriores, así que investigué un poco más y encontré esto:

//Remove update notifications from sub-users
add_action('admin_head','admin_css');
function admin_css()
{
if( current_user_can('YOUR_SELECTED_ROLE'))//Choose the correct role where you need to block update nag
{
add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );
}
}
    
respondido por el Horacsio 23.06.2013 - 16:45
0

Derivado de la respuesta de @ wyck, todos los avisos de actualización y las advertencias de PHP ahora están ocultos usando el siguiente script. Simplemente coloque esto en su functions.php

function remove_core_updates() {
  global $wp_version;
  return (object) array(
    'last_checked' => time(),
    'version_checked' => $wp_version,
  );
}
add_filter('pre_site_transient_update_core', 'remove_core_updates');
add_filter('pre_site_transient_update_plugins', 'remove_core_updates');
add_filter('pre_site_transient_update_themes', 'remove_core_updates');


function remove_menu() {
  global $submenu;
  if (isset($submenu['index.php'][10]))
    unset($submenu['index.php'][10]); // Removes 'Updates'.
}
add_action('admin_menu', 'remove_menu');
    
respondido por el Ricky Boyce 06.08.2015 - 01:48

Lea otras preguntas en las etiquetas