Удаление кнопки “Удалить навсегда” при загрузке файлов в медиа.

Вопрос или проблема

Как удалить или убрать слово Удалить навсегда при загрузке файлов? Я хотел удалить это навсегда, чтобы пользователи не удаляли файлы, которые не должны удалять.

WordPress attachment details

Я использую этот код:

.button-link.delete-attachment{display:none}

Но проблема в том, что если пользователь использует элемент инспектора, они могут просто изменить его на display:block, чтобы показать кнопку удаления. Использовать CSS — не вариант.

Есть ли здесь какой-то код функции, чтобы удалить это? Или где я могу найти основной файл в папке wp-admin, чтобы я мог вручную удалить элемент <div>?

Это может сработать!

css:

.media-sidebar .details .edit-attachment {
    display: none;
}
.media-sidebar .details .delete-attachment {
    display: none;
}

И это:

foreach( array( 'post.php', 'post-new.php' ) as $hook )
    add_action( "admin_print_styles-$hook", 'admin_styles_so_25894288');

function admin_styles_so_25894288() {
    global $typenow;
    if( 'post' !== $typenow )
        return;
    ?>
    <style>
        .media-sidebar .details .delete-attachment
        { 
            display: block; 
        }
        .media-sidebar .details .edit-attachment
        { 
            display: block; 
        }
    </style>
    <?php

}

Ответ или решение

Удаление кнопки "Удалить навсегда" при загрузке медиафайлов в WordPress — задача, требующая более сложного подхода, чем просто скрытие элемента через CSS. Ваша цель состоит в том, чтобы гарантировать глупоустойчивость решения, особенно если ваши пользователи могут использовать "Инструменты разработчика" в браузере для отмены изменений в стиле. Явно манипуляции только с CSS не дадут необходимого уровня защиты, поэтому рассмотрим более надежные способы.

Теория

В интерфейсе администратора WordPress предоставляется возможность удалять медиафайлы. Эта функциональность обеспечивается как частью сервера, так и клиентской части — HTML и JavaScript. Чтобы исключить возможность удаления через интерфейс, необходимо предотвратить доступ к коду, который отвечает за удаление.

Пример

Если смотреть глубже в работу WordPress, функциональные элементы, такие как удаление медиафайлов, управляются с помощью так называемых "хуков" (hooks). Это точки в структуре ядра WordPress, к которым можно "подвесить" кастомные функции.

Применение

  1. Отключение функциональности удаления через хуки:

    Вам потребуется использовать хуки для манипуляции отправляемыми формами или действиями, которые инициируют удаление файлов. Рассмотрим пример кода:

    function disable_delete_attachment() {
       remove_action('wp_ajax_delete-post', 'wp_ajax_delete_post');
    }
    add_action('admin_init', 'disable_delete_attachment');

    Этот код уберет действие, которое WordPress использует для удаления файлов. Это не позволяет даже при наличии кнопки удалить файл.

  2. Изменение пользовательского интерфейса через PHP:

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

    function remove_media_delete_button(){
       ?>
       <style>
           .delete-attachment { display: none; }
       </style>
       <?php
    }
    add_action('admin_head', 'remove_media_delete_button');

    Этот код добавит правило CSS именно в админ-панели и скроет кнопку удаления.

  3. Манипуляция файлами шаблона:

    Если вы хотите изменить сам HTML-код, следует внести изменения в файлы темы. Ищите файл, ответственный за вывод медиа, и уберите ссылку или кнопку из разметки. Однако, это менее безопасное и более трудозатратное решение и его следует избегать.

Заключение

Ваша цель должна состоять в том, чтобы исключить возможность удаления файлов на уровне сервера, а не только пользовательского интерфейса. Путем использования хуков вы можете отключить функциональность удаления, обеспечивая тем самым безопасность ваших медиафайлов в WordPress.

Оцените материал
Добавить комментарий

Капча загружается...