Come rimuovere la biografia dalla pagina di amministrazione del profilo utente
Vorrei rimuovere o nascondere il campo di inserimento della biografia dalla pagina del profilo. Come si fa? Ho già rimosso alcuni metodi di contatto da questa pagina, ma non sono sicuro di come eliminare la biografia.

Non esiste un hook dedicato – la gestione degli utenti è una priorità bassa in WordPress. Devi usare l'output buffering (sì, non è elegante).
Ecco una semplice dimostrazione di come potrebbe essere fatto:
add_action( 'personal_options', array ( 'T5_Hide_Profile_Bio_Box', 'start' ) );
/**
* Cattura la parte con la biobox in un output buffer e la rimuove.
*/
class T5_Hide_Profile_Bio_Box
{
/**
* Chiamato su 'personal_options'.
*
* @return void
*/
public static function start()
{
$action = ( IS_PROFILE_PAGE ? 'show' : 'edit' ) . '_user_profile';
add_action( $action, array ( __CLASS__, 'stop' ) );
ob_start();
}
/**
* Rimuove la bio box dal contenuto bufferizzato.
*
* @return void
*/
public static function stop()
{
$html = ob_get_contents();
ob_end_clean();
// rimuove il titolo
$headline = __( IS_PROFILE_PAGE ? 'Su di te' : 'Informazioni utente' );
$html = str_replace( '<h2>' . $headline . '</h2>', '', $html );
// rimuove la riga della tabella
$html = preg_replace( '~<tr>\s*<th><label for="description".*</tr>~imsUu', '', $html );
print $html;
}
}
Puoi scaricare il codice come plugin standalone: Plugin Remove Bio Box.
I campi della password ora sono sotto Informazioni di contatto … se non ti piace, aggiungi un titolo in stop()
– e ricordati dell'I18n. ;)

Dopo la recente modifica della classe, questo funziona:
add_action( 'personal_options', array ( 'T5_Hide_Profile_Bio_Box', 'start' ) );
/**
* Cattura la parte con la biobox in un buffer di output e la rimuove.
*
* @author Thomas Scholz, <info@toscho.de>
*
*/
class T5_Hide_Profile_Bio_Box
{
/**
* Chiamato su 'personal_options'.
*
* @return void
*/
public static function start()
{
$action = ( IS_PROFILE_PAGE ? 'show' : 'edit' ) . '_user_profile';
add_action( $action, array ( __CLASS__, 'stop' ) );
ob_start();
}
/**
* Rimuove la bio box dal contenuto bufferizzato.
*
* @return void
*/
public static function stop()
{
$html = ob_get_contents();
ob_end_clean();
// rimuove l'intestazione
$headline = __( IS_PROFILE_PAGE ? 'Informazioni personali' : 'Informazioni utente' );
$html = str_replace( '<h3>' . $headline . '</h3>', '', $html );
// rimuove la riga della tabella
$html = preg_replace( '~<tr class="user-description-wrap">\s*<th><label for="description".*</tr>~imsUu', '', $html );
print $html;
}
}

Suggerisco semplicemente di cambiare questo $headline = __( IS_PROFILE_PAGE ? 'About Yourself' : 'About the user' )
in questo $headline = ( IS_PROFILE_PAGE ? __('About Yourself') : __('About the user' ));

Basandosi sulle risposte precedenti, ecco cosa sto usando per rimuovere le parti della pagina Utente che non voglio:
$pagesToAffect = [
'/wp-admin/user-edit.php',
'/wp-admin/profile.php'
];
if (isset($PHP_SELF) && in_array($PHP_SELF, $pagesToAffect)) {
add_action('admin_head', [UserProfileCleaner::class, 'start']);
add_action('admin_footer', [UserProfileCleaner::class, 'finish']);
add_filter('user_contactmethods',[UserProfileCleaner::class, 'hideInstantMessaging'],10000,1);
}
class UserProfileCleaner {
public static function start() {
ob_start(function($buffer) {
// Opzioni Personali
if (!IS_PROFILE_PAGE) {
$startHeading = 'Personal Options';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($startHeading))."</\\1 ?>@is";
preg_match($pattern, $buffer, $start, PREG_OFFSET_CAPTURE);
$endHeading = 'Name';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($endHeading))."</\\1 ?>@is";
preg_match($pattern, $buffer, $end, PREG_OFFSET_CAPTURE);
if (isset($start[0][1]) && isset($end[0][1]) && $start[0][1]<$end[0][1]) {
$buffer = substr($buffer, 0, $start[0][1]).substr($buffer,$end[0][1]);
}
}
$buffer = self::removeSectionHeading($buffer, 'Name');
$buffer = self::removeSectionHeading($buffer, 'Contact Info');
$buffer = self::removeSectionHeading($buffer, 'Additional Capabilities');
$buffer = self::removeSectionRow($buffer, 'Capabilities');
$buffer = self::removeSectionHeading($buffer, 'Forums');
// Informazioni / Bio
$heading = IS_PROFILE_PAGE ? 'About Yourself' : 'About the user';
$buffer = self::removeStandardSection($buffer, $heading);
// Yoast
$heading = 'Yoast SEO Settings';
$buffer = self::removeStandardSection($buffer, $heading);
$heading = 'Memberships';
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>.*?</p>@is";
$buffer = preg_replace($pattern, "", $buffer, 1);
return $buffer;
});
}
private static function removeStandardSection($buffer, $heading) {
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>.*?</table>@is";
return preg_replace($pattern, "", $buffer, 1);
}
private static function removeSectionHeading($buffer, $heading) {
$pattern = "@<(h[0-9]) ?[^>]*?>".preg_quote(_x($heading))."</\\1 ?>@is";
return preg_replace($pattern, "", $buffer, 1);
}
function removeSectionRow($buffer, $heading) {
$pattern = "@<tr ?[^>]*?>[^<]*?<th ?[^>]*?>[^<]*?".preg_quote(_x($heading))."[^<]*?</th ?[^>]*?>.*?</tr ?>@is";
return preg_replace($pattern, "", $buffer, 1);
}
public static function finish() {
ob_end_flush();
}
public static function hideInstantMessaging( $contactmethods ) {
unset($contactmethods['googleplus']);
unset($contactmethods['twitter']);
unset($contactmethods['facebook']);
return $contactmethods;
}
}
È ancora dipendente dalla struttura dell'HTML, ma funziona per me.

Come posso rimuovere il sito web da user-new.php? Ho aggiunto la pagina a $pagesToAffect e rimosso website come riga, ma è ancora presente.

Se aggiungi il seguente codice al tuo file functions.php, rimuoverà la sezione biografia per tutte le lingue di un sito multi-lingua:
//rimuove la biografia
function remove_plain_bio($buffer) {
$titles = array('#<h3>'._x('About Yourself').'</h3>#','#<h3>'._x('About the user').'</h3>#');
$buffer=preg_replace($titles,'<h3>'._x('Password').'</h3>',$buffer,1);
$biotable='#<h3>'._x('Password').'</h3>.+?<table.+?/tr>#s';
$buffer=preg_replace($biotable,'<h3>'._x('Password').'</h3> <table class="form-table">',$buffer,1);
return $buffer;
}
function profile_admin_buffer_start() { ob_start("remove_plain_bio"); }
function profile_admin_buffer_end() { ob_end_flush(); }
add_action('admin_head', 'profile_admin_buffer_start');
add_action('admin_footer', 'profile_admin_buffer_end');
