От автора: в этом уроке мы продолжим создание плагина для WordPress «Избранные записи». Напомню, в предыдущем уроке мы реализовали функционал удаления каждой конкретной статьи из Избранного непосредственно в виджете Консоли. В этом уроке мы реализуем функционал удаления сразу всех статей, фактически, мы позволим пользователю очищать его список Избранного.
![]() |
Автор: Андрей КудлайЗовут меня Андрей Кудлай. Родом я из Украины, живу в Днепропетровске. Веб-программированию учился сам. Неплохо знаю HTML, CSS, PHP, JavaScript. |
Начнем с добавления соответствующей кнопки. Добавим ее сразу после списка Избранного. Допишем в конце функции wfm_show_dashboard_widget() следующий код:
1 |
echo '<div class="wfm-favorites-del-all"><button class="button" id="wfm-favorites-del-all">Очистить список</button><span class="wfm-favorites-hidden"><img src="' . $img_src . '" alt=""></span></div>'; |

Бесплатный курс «Создание тем на WordPress. Быстрый старт»
Изучите курс и узнайте, как создавать уникальные темы на WordPress с нестандартной структурой страниц
Скачать курсДалее в файле wfm-favorites-admin-scripts.js опишем необходимый запрос для удаления всех статей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
$('#wfm-favorites-del-all').click(function(e){ e.preventDefault(); if( !confirm("Подтвердите удаление") ) return false; var $this = $(this), loader = $this.next(), parent = $this.parent(), list = parent.prev(); $.ajax({ type: 'POST', url: ajaxurl, data: { security: wfmFavorites.nonce, action: 'wfm_del_all' }, beforeSend: function(){ $this.fadeOut(300, function(){ loader.fadeIn(); }); }, success: function(res){ loader.fadeOut(300, function(){ if(res === 'Список очищен'){ parent.html(res); list.fadeOut(); }else{ $this.fadeIn(); alert(res); } }); }, error: function(){ alert('Ошибка!'); } }); }); |
Как видим, код похож на код удаления каждой конкретной статьи.
В главном файле плагина — wfm-favorites.php — добавим новый хук, который примет запрос:
1 |
add_action( 'wp_ajax_wfm_del_all', 'wp_ajax_wfm_del_all' ); |
Осталось описать функцию wp_ajax_wfm_del_all(), которая и будет удалять все статьи:
1 2 3 4 5 6 7 8 9 10 11 |
function wp_ajax_wfm_del_all(){ if( !wp_verify_nonce( $_POST['security'], 'wfm-favorites' ) ){ wp_die('Ошибка безопасности!'); } $user = wp_get_current_user(); if( delete_metadata( 'user', $user->ID, 'wfm_favorites' ) ){ wp_die('Список очищен'); }else{ wp_die('Ошибка удаления'); } } |
Здесь мы уже используем функцию WordPress delete_metadata(), которая позволяет удалить все метаданные конкретного объекта. В нашем случае это будет пользователь (user) с указанным ID и ключом метаданных wfm_favorites.
Собственно, все. Если мы нигде не ошиблись, тогда при клике по кнопке список Избранного пользователя будет очищаться.
На этом текущий урок завершен. Удачи и до новых встреч!

Бесплатный курс «Создание тем на WordPress. Быстрый старт»
Изучите курс и узнайте, как создавать уникальные темы на WordPress с нестандартной структурой страниц
Скачать курс
Создание тем на WordPress. Быстрый старт
Изучите курс и узнайте, как создать тему на WordPress
Смотреть
Комментарии (1)