Создание плагина для WordPress «Избранные записи». Урок 10

Создание плагина для WordPress Избранные записи

От автора: в этом уроке мы продолжим создание плагина для WordPress «Избранные записи». Напомню, в предыдущем уроке мы реализовали функционал удаления каждой конкретной статьи из Избранного непосредственно в виджете Консоли. В этом уроке мы реализуем функционал удаления сразу всех статей, фактически, мы позволим пользователю очищать его список Избранного.

автор

Автор: Андрей Кудлай

Зовут меня Андрей Кудлай. Родом я из Украины, живу в Днепропетровске. Веб-программированию учился сам. Неплохо знаю HTML, CSS, PHP, JavaScript.

скачать исходникискачать урок

Начнем с добавления соответствующей кнопки. Добавим ее сразу после списка Избранного. Допишем в конце функции wfm_show_dashboard_widget() следующий код:

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>';

Далее в файле wfm-favorites-admin-scripts.js опишем необходимый запрос для удаления всех статей:

$('#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 — добавим новый хук, который примет запрос:

add_action( 'wp_ajax_wfm_del_all', 'wp_ajax_wfm_del_all' );

Осталось описать функцию wp_ajax_wfm_del_all(), которая и будет удалять все статьи:

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 “Уникальный сайт с нуля”

Получить

Метки: ,

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. Alexey

    Здравствуйте!!!

    Я делаю простой скрипт, но у меня возникла проблема с сессиями.
    Я создал сессию $_SESSION["down"] = true;

    и в другом файле написал этот код:

    Но почему-то выводит слово Ошибка

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree