
Код так же, как и прошлый создан с помощью нейросетей.
Отличия кода 2.0 от первой версии
От первой версии обновлённый код имеет следующие отличия:
- Добавлена функция вставки ссылки на удаление в виде корзины на главную страницу после каждого заголовка поста.
- В код добавлена настройка, позволяющая отключить функцию вывода ссылок для удаления на главной странице сайта. Ссылка в админ-баре остаётся.
На некоторых шаблонах код ломает вёрстку главной страницы. Заголовки и ссылка на удаление работают корректно. Позже постараюсь этот баг исправить.
Если на вашем шаблоне сломалась верстка, напишите плз в комментариях название вашего шаблона и по возможности скиньте код блока новости на главной для анализа. Его можно разместить на сайте pastebin.com, добавив в свой комментарий ссылку на страницу с кодом.
Код удаляет посты без перемещения его в корзину. Будьте внимательнее. Восстановить посты не получится.
Код добавления ссылок на удаление постов v 2.0
/**
* Добавляет ссылку "В корзину" в административную панель WordPress и панель удаления под каждым заголовка каждой новости на главной.
*
* @package Custom Admin Bar
* @idea Денис Иванов(aka Bahus, https://dendrblog.ru)
* @generator Сгенерировано с помощью нейросетей
* @testing Bahus — проверка, тестирование и внедрение в проект
* @version 2.0
* @license Public Domain — свободное использование без ограничений
*/
// -----------------------------------------------------------------------------
// Настройка: отключить фронтальную панель
define('BPF_DISABLE_FRONT_PANEL', false); // true — отключить панель на главной странице
// -----------------------------------------------------------------------------
// Функция добавления ссылки "Удалить пост" в админ-бар
function bahus_add_trash_link_to_admin_bar() {
global $wp_admin_bar;
$post = get_queried_object();
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);
$title = '<i class="fas fa-trash-alt ab-icon"></i>' . __('Отправить пост в корзину', 'text-domain');
$allowed_html = array(
'i' => array(
'class' => true,
),
);
$wp_admin_bar->add_menu(array(
'id' => 'bahus-move-to-trash',
'title' => wp_kses($title, $allowed_html),
'href' => $trash_url,
'meta' => array(
'class' => 'bahus-move-to-trash',
'title' => __('Переместить в корзину', 'text-domain'),
'onclick' => 'return confirm("Вы уверены, что хотите переместить этот пост в корзину?");',
),
));
}
add_action('admin_bar_menu', 'bahus_add_trash_link_to_admin_bar', 9999);
// -----------------------------------------------------------------------------
// Подключение Font Awesome 7
function bahus_enqueue_font_awesome() {
wp_enqueue_style(
'bahus-font-awesome',
'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css',
array(),
'7.0.0',
'all'
);
}
add_action('wp_enqueue_scripts', 'bahus_enqueue_font_awesome');
add_action('admin_enqueue_scripts', 'bahus_enqueue_font_awesome');
// -----------------------------------------------------------------------------
// Стили для админ-панели и панели под заголовками
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 7 Free" !important;
}
#wpadminbar #wp-admin-bar-bahus-move-to-trash .ab-item {
display: flex !important;
align-items: center !important;
}
.bahus-post-title-container {
display: block;
position: relative;
}
.bahus-trash-panel {
display: block;
margin-top: 6px;
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
}
.bahus-trash-panel.visible {
opacity: 1;
pointer-events: auto;
}
.bahus-trash-panel a {
color: #ffffff;
text-decoration: none;
font-size: 18px;
display: inline-block;
}
.bahus-trash-panel i {
font-family: "Font Awesome 7 Free";
color: #ffffff;
}
</style>';
}
add_action('wp_head', 'bahus_custom_admin_bar_styles');
add_action('admin_head', 'bahus_custom_admin_bar_styles');
// -----------------------------------------------------------------------------
// Добавляем панель только к заголовкам постов в цикле на главной
function bahus_add_front_trash_panel($title, $id = null) {
if (BPF_DISABLE_FRONT_PANEL) {
return $title;
}
if (!(is_home() || is_front_page()) || !in_the_loop() || !is_main_query()) {
return $title;
}
global $post;
if (!$post || $post->post_type !== 'post' || !current_user_can('delete_post', $post->ID)) {
return $title;
}
if (!$id) {
$id = get_the_ID();
}
$delete_url = get_delete_post_link($id, '', true);
// Оборачиваем заголовок и добавляем панель под ним
$title_html = '<span class="bahus-post-title-container">';
$title_html .= $title;
$title_html .= '<span class="bahus-trash-panel">';
$title_html .= '<a href="' . esc_url($delete_url) . '" onclick="return confirm(\'Вы уверены, что хотите переместить этот пост в корзину?\');">';
$title_html .= '<i class="fas fa-trash-alt"></i>';
$title_html .= '</a>';
$title_html .= '</span>';
$title_html .= '</span>';
return $title_html;
}
add_filter('the_title', 'bahus_add_front_trash_panel', 10, 2);
// -----------------------------------------------------------------------------
// JS: показывать панель при наведении на заголовок
function bahus_front_trash_panel_script() {
if (BPF_DISABLE_FRONT_PANEL || (!is_home() && !is_front_page())) {
return;
}
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.bahus-post-title-container').forEach(function(container) {
var panel = container.querySelector('.bahus-trash-panel');
if (!panel) return;
container.addEventListener('mouseenter', function() {
panel.classList.add('visible');
});
container.addEventListener('mouseleave', function() {
panel.classList.remove('visible');
});
});
});
</script>
<?php
}
add_action('wp_footer', 'bahus_front_trash_panel_script');
// Конец кода добавления ссылки на удаление материала







