Ocultar usuários específicos de

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>

Comentários são bem-vindos!

Só para confirmar: é esta a página Sobre que lista os administradores e moderadores?

Isso é incrível. Preciso aprender mais sobre programação.

@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>

Isso é um trabalho incrível.

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! :grinning: