web-dev-qa-db-fra.com

Supprimer les champs de profil WordPress des non-administrateurs

Je souhaite supprimer l'option Display name publicly as des non-administrateurs dans la page de profil d'édition WordPress. Comment est-ce possible?

 enter image description here 

if ( ! current_user_can('manage_options') ) {
#remove the above
}

En outre, comment est-il possible de supprimer la fonctionnalité des abonnés de la modification de leur profil?

2
csandreas1

Si vous ne voulez pas que vos utilisateurs soient confondus avec des informations qu’ils ne sont pas obligés de saisir, il peut être judicieux de les supprimer. Et je veux dire les supprimer car masquer n'est pas une option et implique une solution CSS ou JS qui supprime ces champs et titres après le chargement de la page, ce qui signifie que l'utilisateur peut voir des scintillements dans les champs.

Comment supprimer les champs de la page de profil d'administrateur de WordPress (y compris les options personnelles, les informations biographiques, le site Web, etc.) et les titres sans JS. Copiez-le simplement et collez-le dans votre fichier functions.php:

    <?php
    // Remove fields from Admin profile page
    if ( ! function_exists( 'cor_remove_personal_options' ) ) {
        function cor_remove_personal_options( $subject ) {

            $subject = preg_replace('#<tr class="user-display-name-wrap(.*?)</tr>#s', '', $subject, 1); // Remove the "Display name publicly as" field
            return $subject;
        }

        function cor_profile_subject_start() {
            if ( ! current_user_can('manage_options') ) {
                ob_start( 'cor_remove_personal_options' );
            }
        }

        function cor_profile_subject_end() {
            if ( ! current_user_can('manage_options') ) {
                ob_end_flush();
            }
        }
    }
    add_action( 'admin_head', 'cor_profile_subject_start' );
    add_action( 'admin_footer', 'cor_profile_subject_end' );

Donc, cela fait l'affaire et supprime les champs de la page de profil d'administrateur.

Mais si vous ne voulez pas supprimer le pseudo comme ceci, il est obligatoire. Donc, pour cela, vous pouvez utiliser la solution avec JS comme suit:

    <?php 

    //Remove fields from Admin profile page via JS to hide nickname field which is mandatory
    function remove_personal_options(){
        if ( ! current_user_can('manage_options') ) { // 'update_core' may be more appropriate
            echo '<script type="text/javascript">jQuery(document).ready(function($) {
                $(\'form#your-profile tr.user-nickname-wrap\').hide(); // Hide the "nickname" field
            });</script>';
        }
    }
    add_action('admin_head','remove_personal_options');

Et la seule chose qui pouvait être supprimée via le hook était le jeu de couleurs Admin et cela se faisait comme suit:

// Removes ability to change Theme color for the users
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

Pas besoin de cacher les champs en utilisant Javascript, utilisez simplement le code ci-dessus et jetez les lignes que vous ne voulez pas effacer.

Merci!

2
Amritosh pandey