Скрытие определенных пользователей из

Я решил поделиться простым JavaScript-скриптом для скрытия определённых пользователей из списка «Пользователи». Думаю, если реализовать это через плагин, всё будет гораздо элегантнее, но я пока не решаюсь на такой шаг! Также стоит отметить, что это нужно настраивать для каждой темы отдельно, и данный код жёстко привязан к теме «Light» (Светлая)! Однако общие принципы применимы к любой теме.

Предположим, у вас есть пользователи с именами james-admin и another-admin, и вы не хотите, чтобы они были видны всем пользователям. Просто добавьте следующий пользовательский скрипт в настройку </body> (Настройки → Настроить → Темы → Light → </body>):

<script type="text/javascript">
    
    // Скрытые пользователи
    let hidden_users = [ "james-admin", "another-admin" ];
    
    // При загрузке страницы через AJAX
    $( document ).ajaxComplete( function( event, xhr, settings ) {
        
        // Проверка: находится ли страница на списке пользователей
        if ( settings.url.startsWith("/directory_items?") ) {
            
            // Находим все контейнеры со скрытыми пользователями
            hidden_users.forEach(function ( hidden_user ) {
                $( "a:contains('" + hidden_user + "')" ).each( function() {
                    
                    // Дополнительная проверка
                    if ( this.text === hidden_user ) {
                        
                        // Маскируем / скрываем пользователя (специфично для этой темы!)
                        $( this ).closest( "tr" ).remove();
                        
                    }
                    
                });
            });
            
        }
        
    });
    
</script>

Комментарии приветствуются!

Просто хочу уточнить: это страница «О нас», где перечислены администраторы и модераторы?

Это очень круто. Нужно больше учиться программированию.

@Heliosurge, отличное замечание — речь шла о списке пользователей (/u), но я обновил код, чтобы включить информацию о сайте (/about).

Я обновил код, чтобы вы могли указывать страницы для скрытия, а также наличие родительского контейнера, который также должен быть удалён.

<script type="text/javascript">
    
    // страницы для скрытия (страница|родитель)
    let mask_pages = ["/directory_items?|tr", "/about.json"];
    let mask_users = ["james-admin", "another-admin"];
    
    // когда страница загружается через AJAX
    $(document).ajaxComplete(function(event, xhr, settings) {
        
        // проверка, находимся ли мы на списке пользователей
        mask_pages.forEach(function(mask_page_full_spec) {
            
            // разбиваем спецификацию
            let mask_page_spec = mask_page_full_spec.split("|");
            
            // ищем страницу
            if (settings.url.startsWith(mask_page_spec[0])) {
                mask_users.forEach(function(mask_user) {
                    
                    // получаем элемент
                    let mask_user_elem = $("[data-username='"+mask_user+"']");
                    
                    // родительский контейнер?
                    if (mask_page_spec.length == 2) {
                        mask_user_elem.closest(mask_page_spec[1]).remove();
                    } else {
                        mask_user_elem.remove();
                    }
                    
                });
            }
            
        });
        
    });
    
</script>

Это потрясающая работа.

Я понял, что это не работает для мобильной версии. Измените следующее:

// ищем <tr> или <div> в указанном порядке
let mask_pages = ["/directory_items?|tr,div", "/about.json"];

// ищем в родительском элементе, так как closest может включать сам объект
mask_user_elem.parent().closest(mask_page_spec[1]).remove();

Надеюсь, это кому-то пригодится. Как я уже говорил, я уверен, что использование плагина было бы гораздо лучшим способом скрыть пользователей, которые являются «администраторами» и не хотят быть видимыми на форуме клиентов.

Я понимаю, что этот JavaScript также может быть компонентом, который можно использовать в совместимых темах. Хватит уже вас утомлять этой незначительной особенностью — но мне она очень помогла! :grinning: