Eliminar la sección de Opciones personales del perfil

11

Quiero ocultar / eliminar las Opciones personales en la página de administración Tu perfil ( wp-admin/profile.php ).

Soy consciente de que existen soluciones para esto, pero usan jQuery para ocultar esta sección. Esto funciona, pero cuando un usuario tiene JavaScript deshabilitado en su navegador, aparecerá de nuevo. Por lo tanto, no es una forma adecuada de eliminar las Opciones personales.

¿Hay alguna forma de eliminar la sección de Opciones personales de la fuente HTML de la página? Esto significa que no hay trucos de jQuery o CSS, ni modificación de archivos centrales.

    
pregunta dev-jim 20.04.2012 - 10:35

9 respuestas

24

Esto debería hacer el truco

// removes the 'profile.php' admin color scheme options
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

if ( ! function_exists( 'cor_remove_personal_options' ) ) {
  /**
   * Removes the leftover 'Visual Editor', 'Keyboard Shortcuts' and 'Toolbar' options.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( '#<h3>Personal Options</h3>.+?/table>#s', '', $subject, 1 );
    return $subject;
  }

  function cor_profile_subject_start() {
    ob_start( 'cor_remove_personal_options' );
  }

  function cor_profile_subject_end() {
    ob_end_flush();
  }
}
add_action( 'admin_head-profile.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-profile.php', 'cor_profile_subject_end' );

Además, no olvides marcar tus preguntas anteriores como resueltas :)

    
respondido por el user5424 20.04.2012 - 18:13
5

Estaba intentando resolver esto y encontré esta respuesta. El código anterior de Cor van ya no funciona, pero con un ligero cambio de add_action, puede hacerlo.

Todo lo que necesitas hacer es cambiar las dos últimas líneas de:

add_action( 'admin_head-profile.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-profile.php', 'cor_profile_subject_end' );

a

add_action( 'admin_head-user-edit.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-user-edit.php', 'cor_profile_subject_end' );

Por lo tanto, el código final se vería como:

if ( ! function_exists( 'cor_remove_personal_options' ) ) {
  /**
   * Removes the leftover 'Visual Editor', 'Keyboard Shortcuts' and 'Toolbar' options.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( '#<h3>Personal Options</h3>.+?/table>#s', '', $subject, 1 );
    return $subject;
  }

  function cor_profile_subject_start() {
    ob_start( 'cor_remove_personal_options' );
  }

  function cor_profile_subject_end() {
    ob_end_flush();
  }
}
add_action( 'admin_head-user-edit.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-user-edit.php', 'cor_profile_subject_end' );
    
respondido por el KornDev 24.05.2013 - 01:20
5

La respuesta aceptada no funciona con 4.8

Aquí viene un código actualizado y simplificado que debería funcionar con cualquier versión:

        // removes admin color scheme options

        remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

        //Removes the leftover 'Visual Editor', 'Keyboard Shortcuts' and 'Toolbar' options.

        add_action( 'admin_head', function () {

            ob_start( function( $subject ) {

                $subject = preg_replace( '#<h[0-9]>'.__("Personal Options").'</h[0-9]>.+?/table>#s', '', $subject, 1 );
                return $subject;
            });
        });

        add_action( 'admin_footer', function(){

            ob_end_flush();
        });     
    
respondido por el RafaSashi 16.06.2017 - 15:41
3

Gracias al comentario de @Per lo conseguí trabajando para 4.5.2

    // removes admin color scheme options
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

    if ( ! function_exists( 'cor_remove_personal_options' ) ) {
        /**
        * Removes the leftover 'Visual Editor', 'Keyboard Shortcuts' and 'Toolbar' options.
        */
        function cor_remove_personal_options( $subject ) {
            $subject = preg_replace( '#<h2>Personal Options</h2>.+?/table>#s', '', $subject, 1 );
            return $subject;
        }

        function cor_profile_subject_start() {
            ob_start( 'cor_remove_personal_options' );
        }

        function cor_profile_subject_end() {
            ob_end_flush();
        }
    }
    add_action( 'admin_head', 'cor_profile_subject_start' );
    add_action( 'admin_footer', 'cor_profile_subject_end' );'
    
respondido por el Menian Lee 07.06.2016 - 13:50
2

Actualización para 3.9, los siguientes trabajos:

add_action( 'admin_head', 'cor_profile_subject_start' );
add_action( 'admin_footer', 'cor_profile_subject_end' );
    
respondido por el Allen Sutton 18.04.2014 - 10:41
0

Solo quería aclarar que el código no funcionará para versiones localizadas de WordPress, debido a la cadena Personal Options codificada. No se me ocurre ninguna solución fácil aquí, pero las sugerencias son bienvenidas.

Habría agregado esto como un comentario, pero no tengo la reputación suficiente para agregar un comentario.

También aprovecho esta oportunidad para volver a pegar todo el código actualizado para WordPress versión 3.9.

Aquí está:

// removes the 'profile.php' admin color scheme options
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

if ( ! function_exists( 'cor_remove_personal_options' ) ) {
  /**
   * Removes the leftover 'Visual Editor', 'Keyboard Shortcuts' and 'Toolbar' options.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( '#<h3>Personal Options</h3>.+?/table>#s', '', $subject, 1 );
    return $subject;
  }

  function cor_profile_subject_start() {
    ob_start( 'cor_remove_personal_options' );
  }

  function cor_profile_subject_end() {
    ob_end_flush();
  }
}
add_action( 'admin_head', 'cor_profile_subject_start' );
add_action( 'admin_footer', 'cor_profile_subject_end' );

Nuevamente, si sabe de antemano cuál será el idioma de su instalación de WP, cambie la cadena Personal Options a la versión localizada de su idioma, por ejemplo, en italiano, la reemplazará con Impostazioni personali .

    
respondido por el Emanuele Feliziani 09.08.2014 - 19:29
0

Usando

$subject = preg_replace( '#<h3>'.__("Personal Options").'</h3>.+?/table>#s', '', $subject, 1 );

en la función cor_remove_personal_options, también se localiza.

    
respondido por el user3252207 03.09.2015 - 18:17
0

He encontrado esta solución en: enlace

function hide_personal_options(){ 
    echo "\n" . '<script type="text/javascript">jQuery(document).ready(function($) { 
    $(\'form#your-profile > h3:first\').hide(); $(\'form#your-profile > 
    table:first\').hide(); $(\'form#your-profile\').show(); });</script>' . "\n"; 
} 
add_action('admin_head','hide_personal_options');

Si desea ser más específico o eliminar más, debería echar un vistazo aquí: enlace

Puedes agregar esas líneas a la función.

    
respondido por el K. Tromp 17.07.2017 - 13:56
0

Aquí está mi solución CSS, probada en Wordpress 4.9.8

remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
add_action( 'admin_head', function(){
    ob_start(); ?>
    <style>
        #your-profile > h2,
        .user-rich-editing-wrap,
        .user-syntax-highlighting-wrap,
        .user-comment-shortcuts-wrap,
        .user-admin-bar-front-wrap {
            display: none;
        }
    </style>
    <?php ob_end_flush();
});
    
respondido por el Grant 22.08.2018 - 07:27

Lea otras preguntas en las etiquetas