Supprimer la section Options personnelles du profil

11

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

Je suis conscient que des solutions existent, mais j'utilise jQuery pour masquer cette section. Cela fonctionne, mais lorsqu'un utilisateur a désactivé JavaScript dans son navigateur, il réapparaîtra. Par conséquent, ce n'est pas un bon moyen de 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 piratage jQuery ou CSS, ni modification de fichier de base.

dev-jim
la source
Juste pour ajouter, si un utilisateur a désactivé JavaScript, il y en a beaucoup plus qu'il ne pourra pas utiliser dans Wordpress. Mais quand même, le faire côté serveur est beaucoup mieux quand c'est possible :)
Tim Malone
Soyez prudent - voir la réponse: wordpress.stackexchange.com/a/162277/33667
T.Todua

Réponses:

24

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

N'oubliez pas non plus de marquer vos questions précédentes comme résolues :)


la source
c'est génial, mais comment le faire fonctionner pour WP 3.4? seul le sélecteur de jeu de couleurs est supprimé. probablement parce que je n'arrive pas à trouver les fichiers admin_head-profile.phpet admin_footer-profile.phpdans le noyau. des idées? Merci beaucoup.
Ana Ban
Êtes-vous sûr que cela ne fonctionne pas? Je viens de l'utiliser sur une nouvelle installation et cela a bien fonctionné. Notez que vous devez modifier le code ci-dessus si vous utilisez une autre langue. En outre, voici quelques informations sur admin_head-profile.phpet admin_footer-profile.php: codex.wordpress.org/Plugin_API/…
@CorvanNoorloos Merci pour cela, est-il possible de laisser l'option pour leur permettre de vérifier s'ils veulent afficher la barre d'outils ou non?
Greenhoe
6

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

Il vous suffit 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' );
KornDev
la source
Bon suivi, cette modification du code d'origine a parfaitement fonctionné.
Daniel
Pourriez-vous me dire comment puis-je supprimer plus d'éléments <h3>? De quelles modifications du code ci-dessus ai-je besoin?
Fabian
5

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();
        });     
RafaSashi
la source
1
+1 mais même problème qu'avec la réponse acceptée, la chaîne doit être localisée pour fonctionner avec des langues non anglaises.
Mark Kaplun
@MarkKaplun c'est vrai! J'ai fait le changement.
RafaSashi
3

Grâce au commentaire de @Per, je l'ai fait fonctionner pour 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' );`
Menian Lee
la source
2

Mise à jour pour 3.9, les travaux suivants:

add_action( 'admin_head', 'cor_profile_subject_start' );
add_action( 'admin_footer', 'cor_profile_subject_end' );
Allen Sutton
la source
1

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();
});
Subvention
la source
0

Je voulais juste préciser que le code ne fonctionnera pas pour les versions localisées de WordPress, à cause de la Personal Optionschaîne codée en dur . Je ne vois pas de 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 l'ensemble du 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' );

Encore une fois, si vous savez à l'avance quelle sera la langue de votre installation WP, remplacez la Personal Optionschaîne par la version localisée de votre langue, par exemple en italien vous la remplacerez par Impostazioni personali.

Emanuele Feliziani
la source
0

En utilisant

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

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

user3252207
la source
0

J'ai trouvé cette solution sur: https://premium.wpmudev.org/blog/how-to-simplify-wordpress-profiles-by-removing-personal-options/?ptm=c&utm_expid=3606929-108.O6f5ypXuTg-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 œil ici: https://isabelcastillo.com/hide-personal-options-wordpress-admin-profile

Vous pouvez simplement ajouter ces lignes dans la fonction.

K. Tromp
la source
Le supprimer avec Javascript n'est jamais une bonne pratique ...
Marcos Buarque