Eliminar la sección de Opciones Personales del Perfil
Quiero ocultar/eliminar las Opciones Personales en la página de administración Tu Perfil (wp-admin/profile.php
).
Sé que existen soluciones para esto, pero utilizan jQuery para ocultar esta sección. Esto funciona, pero cuando un usuario tiene JavaScript desactivado en su navegador, volverá a mostrarse. Por lo tanto, no es una forma adecuada de eliminar las Opciones Personales.
¿Existe alguna manera de eliminar la sección de Opciones Personales directamente del código fuente HTML de la página? Esto significa sin utilizar jQuery ni trucos de CSS, ni modificación de archivos del núcleo.

Esto debería funcionar
// elimina las opciones del esquema de colores en `profile.php`
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
if ( ! function_exists( 'cor_remove_personal_options' ) ) {
/**
* Elimina las opciones sobrantes 'Editor Visual', 'Atajos de Teclado' y 'Barra de Herramientas'.
*/
function cor_remove_personal_options( $subject ) {
$subject = preg_replace( '#<h3>Opciones Personales</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' );
Además, no olvides marcar tus preguntas anteriores como resueltas :)

esto es increíble, pero ¿cómo hago que funcione en WP 3.4? solo el selector de esquema de colores fue eliminado. probablemente porque no puedo encontrar los archivos admin_head-profile.php
y admin_footer-profile.php
en el núcleo. ¿alguna idea? muchas gracias.

¿Estás seguro que no funciona? Acabo de usar esto en una instalación nueva y funcionó bien. Ten en cuenta que debes editar el código anterior si estás usando otro idioma. Además, aquí hay información sobre admin_head-profile.php
y admin_footer-profile.php
: http://codex.wordpress.org/Plugin_API/Action_Reference#Administrative_Actions

@CorvanNoorloos Gracias por esto, ¿hay alguna manera de dejar la opción para permitirles verificar si quieren mostrar la barra de herramientas o no?

La respuesta aceptada no funciona con la versión 4.8
A continuación presentamos un código actualizado y simplificado que debería funcionar con cualquier versión:
// elimina las opciones de esquema de color del administrador
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
// Elimina las opciones restantes de 'Editor Visual', 'Atajos de teclado' y 'Barra de herramientas'
add_action( 'admin_head', function () {
ob_start( function( $subject ) {
$subject = preg_replace( '#<h[0-9]>'.__("Opciones personales").'</h[0-9]>.+?/table>#s', '', $subject, 1 );
return $subject;
});
});
add_action( 'admin_footer', function(){
ob_end_flush();
});

Estaba intentando resolver esto y me encontré con esta respuesta. El código anterior de Cor van ya no funciona, pero con un pequeño cambio en el add_action, puede funcionar.
Todo lo que necesitas hacer es cambiar las últimas dos líneas de:
add_action( 'admin_head-profile.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-profile.php', 'cor_profile_subject_end' );
a
add_action( 'admin_head-user-edit.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-user-edit.php', 'cor_profile_subject_end' );
Entonces, el código final quedaría algo así:
if ( ! function_exists( 'cor_remove_personal_options' ) ) {
/**
* Elimina las opciones sobrantes 'Editor Visual', 'Atajos de teclado' y 'Barra de herramientas'.
*/
function cor_remove_personal_options( $subject ) {
$subject = preg_replace( '#<h3>Opciones Personales</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' );

Gracias al comentario de @Per logré que funcione para la versión 4.5.2
// elimina las opciones de esquema de color del administrador
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
if ( ! function_exists( 'cor_remove_personal_options' ) ) {
/**
* Elimina las opciones sobrantes 'Editor Visual', 'Atajos de teclado' y 'Barra de herramientas'.
*/
function cor_remove_personal_options( $subject ) {
$subject = preg_replace( '#<h2>Opciones Personales</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' );`

Aquí está mi solución CSS, probada en 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();
});

Solo quería aclarar que el código no funcionará para versiones localizadas de WordPress, debido a la cadena de texto fija Personal Options
. No se me ocurre una solución fácil aquí, pero las sugerencias son bienvenidas.
Hubiera añadido esto como un comentario, pero no tengo suficiente reputación para agregar comentarios.
Aprovecho también para volver a pegar el código completo actualizado para la versión 3.9 de WordPress.
Aquí está:
// elimina las opciones de esquema de colores del admin en `profile.php`
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
if ( ! function_exists( 'cor_remove_personal_options' ) ) {
/**
* Elimina las opciones sobrantes 'Editor Visual', 'Atajos de teclado' y 'Barra de herramientas'.
*/
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 nuevo, si sabes de antemano cuál será el idioma de tu instalación de WP, cambia la cadena Personal Options
por la versión localizada de tu idioma, por ejemplo en italiano lo reemplazarías con Impostazioni personali
.

Encontré esta solución en: 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 deseas ser más específico o eliminar más elementos, deberías revisar aquí: https://isabelcastillo.com/hide-personal-options-wordpress-admin-profile
Puedes simplemente agregar esas líneas en la función.

Yo elimino solo el título y uso CSS para ocultar la primera tabla...
Para mí, en 2023, esto funciona:
// elimina las opciones de esquema de color del administrador
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
if ( ! function_exists( 'cor_remove_personal_options' ) ) {
/**
* Elimina las opciones sobrantes 'Editor Visual', 'Atajos de Teclado' y 'Barra de Herramientas'.
*/
function cor_remove_personal_options( $subject ) {
$subject = preg_replace( '#<h[0-9]>'.__("Opciones Personales").'</h[0-9]>#s', '<style>#your-profile>.form-table {display:none} #your-profile>.form-table ~ .form-table {display:block}</style>', $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' );
