web-dev-qa-db-fra.com

Supprimer la section Options personnelles du profil

Je souhaite masquer/supprimer les options personnelles dans la page d'administration Votre profil (wp-admin/profile.php).

Je suis conscient que des solutions existent, mais jQuery est utilisé pour masquer cette section. Cela fonctionne, mais lorsqu'un utilisateur a JavaScript désactivé dans son navigateur, celui-ci réapparaîtra. Par conséquent, ce n'est pas un moyen approprié pour supprimer les options personnelles.

Existe-t-il un moyen de supprimer la section Options personnelles de la source HTML de la page? Cela signifie pas de hacks jQuery ou CSS, ou la modification de fichiers de base.

11
dev-jim

Cela devrait faire l'affaire

// 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' );

De plus, n'oubliez pas de marquer vos questions précédentes comme résolues :)

24
user5424

La réponse acceptée ne fonctionne pas avec 4.8

Voici un code à jour et simplifié qui devrait fonctionner avec n'importe quelle version:

        // 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();
        });     
5
RafaSashi

J'essayais juste de comprendre cela et suis tombé sur cette réponse. Le code ci-dessus de Cor van ne fonctionne plus, mais avec un léger changement de add_action, cela peut fonctionner.

Tout ce que vous avez à faire est de changer les deux dernières lignes de:

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

à

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

Ainsi, le code final ressemblerait à quelque chose comme:

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' );
5
KornDev

Grâce au commentaire de @Per, je l’ai obtenu pour la version 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' );`
3
Menian Lee

Mise à jour pour 3.9, les travaux suivants:

add_action( 'admin_head', 'cor_profile_subject_start' );
add_action( 'admin_footer', 'cor_profile_subject_end' );
2
Allen Sutton

Voici ma solution CSS, testée dans 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();
});
0
Grant

Je voulais juste préciser que le code ne fonctionnerait pas pour les versions localisées de WordPress, à cause de la chaîne codée en dur Personal Options. Je ne peux pas penser à une solution facile ici, mais les suggestions sont les bienvenues.

J'aurais ajouté ceci en tant que commentaire, mais je n'ai pas assez de réputation pour ajouter un commentaire.

J'en profite également pour recoller tout le code mis à jour pour WordPress version 3.9.

C'est ici:

// 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' );

De nouveau, si vous savez à l'avance quelle sera la langue de votre installation WP, remplacez la chaîne Personal Options par la version localisée de votre langue. Par exemple, en italien, vous la remplacerez par Impostazioni personali.

0
Emanuele Feliziani

En utilisant

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

dans la fonction cor_remove_personal_options, il est également localisé.

0
user3252207

J'ai trouvé cette solution sur XPCV9sY1yrw.2

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 vous voulez être plus précis ou supprimer plus, vous devriez jeter un coup d'oeil ici: https://isabelcastillo.com/hide-personal-options-wordpress-admin-profile

Vous pouvez simplement ajouter ces lignes dans la fonction.

0
K. Tromp