Achei que deveria compartilhar um código JavaScript simples para ocultar usuários específicos da lista de Usuários. Imagino que isso pudesse ser feito de forma muito mais elegante por meio de um plugin, mas ainda não tenho coragem para isso! Além disso, isso precisa ser feito para cada tema e está hard-coded para funcionar apenas com o tema Light! Os princípios se aplicam a qualquer tema.
Digamos que você tenha usuários chamados james-admin e another-admin e não queira que eles sejam visíveis abertamente para todos os usuários. Basta adicionar o seguinte script personalizado à personalização </body> (Configurações -> Personalizar -> Temas -> Light -> </body>):
<script type="text/javascript">
// usuários ocultos
let hidden_users = [ "james-admin", "another-admin" ];
// quando uma página é carregada via AJAX
$( document ).ajaxComplete( function( event, xhr, settings ) {
// verificar se está na lista de usuários
if ( settings.url.startsWith("/directory_items?") ) {
// encontrar todos os contêineres com usuários ocultos
hidden_users.forEach(function ( hidden_user ) {
$( "a:contains('" + hidden_user + "')" ).each( function() {
// verificação dupla
if ( this.text === hidden_user ) {
// mascarar/ocultar o usuário (específico para este tema!)
$( this ).closest( "tr" ).remove();
}
});
});
}
});
</script>
@Heliosurge, bom ponto - isso era sobre a lista de usuários (/u), mas agora atualizei para incluir informações do site (/about).
Atualizei o código para que você possa especificar as páginas a serem ocultadas e também se há um contêiner pai que também precise ser removido.
<script type="text/javascript">
// páginas a ocultar (página|pai)
let mask_pages = ["/directory_items?|tr", "/about.json"];
let mask_users = ["james-admin", "another-admin"];
// quando uma página é carregada via AJAX
$(document).ajaxComplete(function(event, xhr, settings) {
// verificar se está na lista de usuários
mask_pages.forEach(function(mask_page_full_spec) {
// dividir especificação
let mask_page_spec = mask_page_full_spec.split("|");
// encontrar página
if (settings.url.startsWith(mask_page_spec[0])) {
mask_users.forEach(function(mask_user) {
// obter contêiner
let mask_user_elem = $("[data-username='"+mask_user+"']");
// contêiner pai?
if (mask_page_spec.length == 2) {
mask_user_elem.closest(mask_page_spec[1]).remove();
} else {
mask_user_elem.remove();
}
});
}
});
});
</script>
Percebi que isso não funcionava para a versão móvel. Altere o seguinte:
// procurar por <tr> ou <div>, nesta ordem
let mask_pages = ["/directory_items?|tr,div", "/about.json"];
// procurar a partir do elemento pai, pois closest pode incluir o próprio objeto
mask_user_elem.parent().closest(mask_page_spec[1]).remove();
Espero que isso seja útil para algumas pessoas. Como disse, tenho certeza de que um plugin seria uma maneira muito melhor de ocultar usuários que são ‘administradores’ e não desejam ser visíveis em um fórum de clientes.
Percebo que esse JavaScript também poderia ser um componente compartilhável entre temas compatíveis. Vou parar de entediá-los com essa funcionalidade insignificante — mas ela me ajudou!