Вопрос или проблема
Как удалить или убрать слово Удалить навсегда при загрузке файлов? Я хотел удалить это навсегда, чтобы пользователи не удаляли файлы, которые не должны удалять.
Я использую этот код:
.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, к которым можно "подвесить" кастомные функции.
Применение
-
Отключение функциональности удаления через хуки:
Вам потребуется использовать хуки для манипуляции отправляемыми формами или действиями, которые инициируют удаление файлов. Рассмотрим пример кода:
function disable_delete_attachment() { remove_action('wp_ajax_delete-post', 'wp_ajax_delete_post'); } add_action('admin_init', 'disable_delete_attachment');
Этот код уберет действие, которое WordPress использует для удаления файлов. Это не позволяет даже при наличии кнопки удалить файл.
-
Изменение пользовательского интерфейса через PHP:
Чтобы убрать соответствующие элементы интерфейса, больше подходит редактирование админ-панели. Ниже пример устранения кнопки через изменение файлов темы:
function remove_media_delete_button(){ ?> <style> .delete-attachment { display: none; } </style> <?php } add_action('admin_head', 'remove_media_delete_button');
Этот код добавит правило CSS именно в админ-панели и скроет кнопку удаления.
-
Манипуляция файлами шаблона:
Если вы хотите изменить сам HTML-код, следует внести изменения в файлы темы. Ищите файл, ответственный за вывод медиа, и уберите ссылку или кнопку из разметки. Однако, это менее безопасное и более трудозатратное решение и его следует избегать.
Заключение
Ваша цель должна состоять в том, чтобы исключить возможность удаления файлов на уровне сервера, а не только пользовательского интерфейса. Путем использования хуков вы можете отключить функциональность удаления, обеспечивая тем самым безопасность ваших медиафайлов в WordPress.