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

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

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

автор

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

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

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

Итак, перед нами стоит задача вывести список избранных статей в виджете консоли — на главной странице админки WordPress. Для этого нам необходимо добавить в консоль новый виджет. Как же это сделать?

Как добавить виджет в консоль WordPress?

Сделать это на самом деле не сложно. Для этого WordPress предлагает использовать специальную функцию wp_add_dashboard_widget(). Эта функция должна вызываться во время события wp_dashboard_setup. Проще говоря, нам необходимо зацепиться за хук wp_dashboard_setup и вызвать нашу пользовательскую функцию, которая, в свою очередь, вызовет функцию wp_add_dashboard_widget().

Итак, в главном файле плагина цепляем пользовательскую функцию к необходимому событию:

add_action( 'wp_dashboard_setup', 'wfm_favorites_dashboard_widget' );

Ну а в файле functions.php плагина опишем функцию:

function wfm_favorites_dashboard_widget(){
	wp_add_dashboard_widget('wfm_favorites_dashboard', 'Ваш список Избранного', 'wfm_show_dashboard_widget');
}

Как видим, функция wp_add_dashboard_widget() принимает в себя несколько параметров, три из которых являются обязательными:

id виджета;

название виджета в консоли;

callback функция, показывающая содержимое виджета.

Собственно, после этого мы должны увидеть в консоли новый, пока что пустой, виджет с названием, указанным во втором параметре функции wp_add_dashboard_widget().

Осталось описать функцию, переданную в третьем параметре, у нас это wfm_show_dashboard_widget(). Там же, в файле функций плагина напишем код функции, которая и будет выводить список избранных статей:

function wfm_show_dashboard_widget(){
	$user = wp_get_current_user();
	$favorites = get_user_meta( $user->ID, 'wfm_favorites' );
	if(!$favorites){
		echo 'Список пуст';
		return;
	}
	echo '<ul>';
	foreach($favorites as $favorite){
		echo '<li><a href="' . get_permalink( $favorite ) . '" target="_blank">' . get_the_title( $favorite ) . '</a></li>';
	}
	echo '</ul>';
}

Если мы нигде не ошиблись, то теперь авторизованный пользователь увидит в консоли виджет, где и будет выведен список статей, добавленных им в избранное. На этом текущий урок завершен. Удачи и до новых встреч!

Хотите быстро научиться создавать сайты и блоги на WordPress с уникальным дизайном?

Получите самую полную в Рунете бесплатную систему обучения создания сайтов на WordPress “Уникальный сайт с нуля”

Получить

Метки: ,

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

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

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

  1. Alexey

    Здравствуйте!!! На новых версия этот плагин не работает.
    Пишет:
    Плагин не был активирован, потому что он вызвал фатальную ошибку.

    Parse error: syntax error, unexpected ‘[‘ in P:\home\localhost\subdomain\wp-content\plugins\wfm-favorites\functions.php on line 41

    • Андрей Кудлай

      Здравствуйте, Алексей. На новых версиях все замечательно работает. Скорее не работает на старых версиях… вот только я имею в виду не версию WordPress, а версию PHP. В одном из первых уроков я специально предупреждал, что использую версию PHP 5.4, а потому могу использовать короткую запись при объявлении массива, такую — []. Если же у Вас версия PHP ниже, тогда короткая запись работать не будет и ее нужно заменить на такую — array().
      Соответственно, у Вас версия PHP < 5.4, поэтому либо измените версию PHP, либо внесите поправку в код на 41-ой строке:
      array(‘url’ => admin_url(‘admin-ajax.php’), ‘nonce’ => wp_create_nonce(‘wfm-favorites’), ‘postId’ => $post->ID)

  2. Леонид

    Здравствуйте. Благодарю за серию, но не могли бы Вы мне подсказать такой момент — пишу свой плагин с виджетом в консоли, никак не пойму как реализовать функционал — есть функция-обработчик ajax-запроса, запрос дергает данные из БД в результирующий массив и перед этим подставляет данные (текущую дату) с пользовательского ПК в запрос и в input[date]. Как сделать так, чтобы я мог пройтись циклом по массиву для отрисовки результатов в пользовательском интерфейсе виджета консоли? Пробовал предварительно глобализировать массив (создал его вне функции, в теле функции вводил global), но функция вывода интерфейса виджета данных из массива все равно не видит.

    • Андрей Кудлай

      Здравствуйте, Леонид.
      Если массив объявлен ДО вызова функции, а в самой функции он берется из глобальной области видимости (через global), значит массив должен быть однозначно доступен в функции. Если это не так, значит, скорее всего, на момент вызова функции массива попросту нет. Подсказать что-то более конкретное можно только производя отладку кода.

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

Ваш 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