Pensé que compartiría un poco de JavaScript sencillo para ocultar usuarios específicos de la lista de Users. Imagino que esto podría hacerse de manera mucho más elegante mediante un plugin, ¡pero aún no me atrevo a hacerlo! Además, esto debe hacerse para cada tema y está codificado para funcionar únicamente con el tema Light! Los principios se aplican a cualquier tema.
Digamos que tienes usuarios llamados james-admin y another-admin y no deseas que sean visibles abiertamente para todos los usuarios. Simplemente agrega el siguiente script personalizado a la personalización de </body> (Configuración -> Personalizar -> Temas -> Light -> </body>):
<script type="text/javascript">
// usuarios ocultos
let hidden_users = [ "james-admin", "another-admin" ];
// cuando una página se carga mediante AJAX
$( document ).ajaxComplete( function( event, xhr, settings ) {
// verificar si estamos en la lista de usuarios
if ( settings.url.startsWith("/directory_items?") ) {
// encontrar todos los contenedores con usuarios ocultos
hidden_users.forEach(function ( hidden_user ) {
$( "a:contains('" + hidden_user + "')" ).each( function() {
// verificación doble
if ( this.text === hidden_user ) {
// enmascarar / ocultar el usuario (específico para este tema!)
$( this ).closest( "tr" ).remove();
}
});
});
}
});
</script>
@Heliosurge, buen punto: esto se refería a la lista de usuarios (/u), pero ahora he actualizado para incluir la información del sitio (/about).
He actualizado el código para que puedas especificar las páginas que se deben ocultar y también si hay un contenedor padre que también deba eliminarse.
<script type="text/javascript">
// páginas a ocultar (página|padre)
let mask_pages = ["/directory_items?|tr", "/about.json"];
let mask_users = ["james-admin", "another-admin"];
// cuando se carga una página mediante AJAX
$(document).ajaxComplete(function(event, xhr, settings) {
// verificar si estamos en la lista de usuarios
mask_pages.forEach(function(mask_page_full_spec) {
// dividir la especificación
let mask_page_spec = mask_page_full_spec.split("|");
// encontrar la página
if (settings.url.startsWith(mask_page_spec[0])) {
mask_users.forEach(function(mask_user) {
// obtener el contenedor
let mask_user_elem = $("[data-username='"+mask_user+"']");
// ¿contenedor padre?
if (mask_page_spec.length == 2) {
mask_user_elem.closest(mask_page_spec[1]).remove();
} else {
mask_user_elem.remove();
}
});
}
});
});
</script>
Me di cuenta de que esto no funcionaba para la versión móvil. Cambia lo siguiente:
// buscar <tr> o <div>, en ese orden
let mask_pages = ["/directory_items?|tr,div", "/about.json"];
// buscar desde el padre, ya que closest puede incluir el propio objeto
mask_user_elem.parent().closest(mask_page_spec[1]).remove();
Espero que esto sea de alguna utilidad para la gente. Como dije, estoy seguro de que un complemento sería una forma mucho mejor de poder ocultar a los usuarios que son ‘administradores’ y no desean ser visibles en un foro de clientes.
Me doy cuenta de que este JavaScript también podría ser un componente que se pueda compartir entre temas compatibles. Ya no os aburriré más con esta característica insignificante, ¡pero me ha sido de gran ayuda!