
Зачем нужно удалять записи wordpress на фронтенде
Администратору сайта может понадобиться удалить просматриваемый им пост на сайте. Для этого ему нужно зайти в админку, найти там нужный пост и удалить. Это очень неудобно.
Просто добавьте этот код в файл functions.php вашего шаблона и в админ-баре у вас на сайте отобразится кнопка с иконкой корзины для быстрого удаления просматриваемого поста. Будет выдано окно для подтверждения вашего решения. После удаления поста вы окажетесь на странице 404 и можете спокойно закрыть вкладку браузера.
Изначально в WordPress такой кнопки нет. Почему они до сих пор её не сделали — непонятно. Ведь удобно же. Некоторые авторы шаблонов встраивают этот функционал в свои продукты, но не все.
В некоторых шаблонах, которые я использую на своих сайтах, таких кнопок нет.
Код кнопки в админ-баре для удаления поста
Я не являюсь программистом, поэтому код сгенерирован с помощью нейросетей. Мне оставалось лишь его проверить и протестировать.
/**
* Добавляет ссылку "В корзину" в административную панель WordPress с иконкой.
*
* @package Custom Admin Bar
* @idea Денис Иванов(aka Bahus, https://dendrblog.ru/neyroseti/bystroe-udalenie-postov-v-wordpress-bez-vhoda-v-adminku.html) — постановка задачи, концепция функционала
* @generator Сгенерировано с помощью нейросетей
* @testing Bahus — проверка, тестирование и внедрение в проект
* @version 1.0
* @license Public Domain — свободное использование без ограничений
*/
// Главная функция для добавления ссылки "Удалить пост" в верхнюю админ-панель WordPress
function bahus_add_trash_link_to_admin_bar() {
global $wp_admin_bar;
// Получаем текущий пост (объект WordPress)
$post = get_queried_object();
// Проверяем: объект должен быть постом, у него должен быть ID, и пользователь должен иметь право на удаление
if (!is_a($post, 'WP_Post') || !isset($post->ID) || !current_user_can('delete_post', $post->ID)) {
return; // Прерываем выполнение, если условия не выполнены
}
// Получаем ссылку на удаление поста
$trash_url = get_delete_post_link($post->ID, '', true);
// HTML-код заголовка с иконкой "корзина"
$title = '<i class="fas fa-trash-alt ab-icon"></i>' . __('Отправить пост в корзину', 'text-domain');
// Разрешаем только теги <i> с атрибутом class — для безопасности
$allowed_html = array(
'i' => array(
'class' => true,
),
);
// Добавляем элемент меню в админ-бар
$wp_admin_bar->add_menu(array(
'id' => 'bahus-move-to-trash', // Уникальный ID меню
'title' => wp_kses($title, $allowed_html), // Заголовок с фильтрацией HTML
'href' => $trash_url, // Ссылка на удаление поста
'meta' => array(
'class' => 'bahus-move-to-trash',
'title' => __('Переместить в корзину', 'text-domain'), // Тултип
'onclick' => 'return confirm("Вы уверены, что хотите переместить этот пост в корзину?");', // Подтверждение удаления
),
));
}
// Подключаем функцию к хуку 'admin_bar_menu' с высоким приоритетом (9999),
// чтобы элемент оказался в конце меню
add_action('admin_bar_menu', 'bahus_add_trash_link_to_admin_bar', 9999);
// Функция для подключения иконок Font Awesome 6.7.2 через CDN
function bahus_enqueue_font_awesome() {
wp_enqueue_style(
'bahus-font-awesome', // Уникальный хендлер
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css', // CDN-ссылка
array(), // Зависимости
'6.7.2', // Версия
'all' // Медиа-тип
);
}
// Подключаем Font Awesome и на фронтенде, и в админке
add_action('wp_enqueue_scripts', 'bahus_enqueue_font_awesome');
add_action('admin_enqueue_scripts', 'bahus_enqueue_font_awesome');
// Добавляем CSS-стили для иконки "корзина" в админ-панели
function bahus_custom_admin_bar_styles() {
echo '<style type="text/css">
/* Стили для иконки корзины в верхнем меню */
#wpadminbar #wp-admin-bar-bahus-move-to-trash .ab-item .fas.fa-trash-alt.ab-icon {
color: #ffffff !important;
vertical-align: middle !important;
margin-right: 5px !important;
font-size: 16px !important;
display: inline-block !important;
font-family: "Font Awesome 6 Free" !important;
}
/* Выравнивание текста и иконки по центру */
#wpadminbar #wp-admin-bar-bahus-move-to-trash .ab-item {
display: flex !important;
align-items: center !important;
}
</style>';
}
// Подключаем стили в head сайта и админки
add_action('wp_head', 'bahus_custom_admin_bar_styles');
add_action('admin_head', 'bahus_custom_admin_bar_styles');
// Конец кода добавления ссылки на удаление материала
Как использовать код
Элементарно, Ватсон! Добавьте этот код в файл functions.php вашей темы.
Совет: не редактируйте оригинальные файлы шаблона, потому что при обновлении темы все внесённые изменения будут перезаписаны и при каждой новой версии вам придётся добавлять код заново. Используйте дочернюю тему (child theme) и вставляйте код в её functions.php, а не родительский. Тогда при обновлении шаблона ничего не затрётся.
Можете сделать этот код в виде плагина и установить плагин на сайт. Этот вариант более удобен при массовом размещении кода.
Результат
Теперь, когда вы залогинены на сайте, можете легко удалять записи wordpress при просмотре какого-либо поста на фронтенде. Просто нажимаете кнопку удаления в админ-баре и подтверждаете своё решение.
Всё, пост удалён. Быстро и удобно.







