web-dev-qa-db-fra.com

Autoriser le profil HTML pour certains utilisateurs

Je sais qu'il existe une tonne de publications sur la manière d'autoriser le HTML dans les profils. La plupart d'entre eux mettent en garde contre le risque de sécurité que cela pose. À mon avis, il doit exister un moyen d'autoriser uniquement les utilisateurs à utiliser le langage HTML pour certains utilisateurs. J'ai essayé ça mais ça ne marche pas. Je pense que c'est parce que vous ne pouvez pas supprimer un filtre de l'intérieur d'un filtre. Toute aide serait géniale.

add_action('edit user profile update', 'nifty_strip_html');

 function nifty_strip_html($user_id) {
     if ($user_id == 2){
        //if user id is 2 then allow html
        remove_filter('pre_user_description', 'wp_filter_kses');

        }
      else{
            return; //keep the filtered html
      }
  }
3
Brooke.

Vous pouvez vous accrocher à une action précoce et appliquer le filtre à votre cas d'utilisation:

add_action( 'load-profile.php', 'allow_profile_html_wpse_91564' );

function allow_profile_html_wpse_91564()
{
    global $current_user;
    if( '2' == $current_user->ID )
        remove_filter('pre_user_description', 'wp_filter_kses');
}

Le hook load-$pagenow s'exécute dans toutes les pages d'administration par défaut (c'est-à-dire, non ajouté par un tiers), et il est déclaré dans le fichier /wp-admin/admin.php.

$pagenow est la page PHP en cours d'exécution à un moment donné. Donc, pour cibler la page /wp-admin/user-edit.php?user_id=2, il faut un autre hook et une autre vérification conditionnelle:

add_action( 'load-user-edit.php', 'callback_function' );

function allow_user_html_wpse_91564()
{        
    if( isset( $_REQUEST['user_id'] ) && '2' == $_REQUEST['user_id'] )
        remove_filter( 'pre_user_description', 'wp_filter_kses' );    
}
3
brasofilo