Как добавить свое меню на панель администратора WordPress

Как добавить свое меню на панель администратора WordPress

Сегодня мы продолжим адаптировать под свои нужды новое функциональное решение, которое появилось в WordPress 3.1 — «Панель администратора».

Повторюсь, на мой взгляд — данная панель очень удобна в работе и позволяет сильно упростить взаимодействие с блогом. Возможно, сказывается мое довольно длительное общение с 1C:Bitrix, в котором подобный же функционал является неотъемлемой частью интерфейса администратора и позволяет выполнять многие действия вообще без посещения административной части сайта.

Итак, в прошлой статье мы разобрались — как удалить ненужные пункты на панели администратора, а в этой статье научимся добавлять собственное меню на панель администратора WordPress с нужными в работе ссылками, которые позволят упростить работу с блогом.

Что мы будем добавлять?

В сущности, добавить можно любые ссылки, но я сделал подборку тех сервисов, социальных сетей и закладок, которыми пользуюсь сам. Там, где это было возможно — к каждой ссылке добавлены параметры, которые позволяют сразу получать определенные данные со страницы сайта (например, title) или открывать информацию именно по тому сайту, с которого был переход на сайт сервиса.

Это позволило сделать схему работы более удобной — код можно добавлять на любой сайт без предварительной правки.

Сервисы для работы с сайтом:

  • просмотр статистики сайта в Google Webmaster;
  • проверка показателей сайта в PR-CY.ru;
  • проверка количества реакций в Twitter.

Социальные сети:

  • публикация в Facebook;
  • публикация статьи в Twitter;
  • публикация статья во вКонтакте;
  • публикация статьи в ЖЖ;
  • публикация в Google Buzz;
  • публикация в МойМир;
  • публикация статьи в Я.ру;

Анонсирование статьи в социальных сетях для вебмастеров:

  • анонсирование в Grabr.ru;
  • анонсирование в Блогистике;
  • анонсирование в Seominds;
  • анонсирование в Webice

Социальные закладки:

  • добавление статьи в Google Bookmarks;
  • добавление статьи в Memori.ru;
  • добавление статьи в БобрДобр;
  • добавление статьи в МоёМесто;
  • добавление статьи в MisterWong.

Добавляем пункты меню в панели администратора WordPress

Для этого мы создадим отдельное меню под названием «Share» и добавим в него все наши ссылки.

Открываем файл functions.php в папке темы WordPress и добавляем в него следующий код. Если такого файла в папке нет — просто создайте его.

Перед внесением изменений в functions.php — обязательно сделайте резервную копию этого файла!

function wp_admin_bar_init() {
	if (!is_super_admin() || !is_admin_bar_showing() )
		return;
 
	add_action('admin_bar_menu', 'wp_admin_bar_links', 500);
}
 
function wp_admin_bar_links() {
	global $wp_admin_bar;
 
	$url = 'http://'. $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	$html = file_get_contents($url);
	if(preg_match('/<title>(.*)<\/title>/smU', $html, $matches)) {
	$title = $matches[1];}
	$gwt_url = ''. $_SERVER["SERVER_NAME"];
	$gwt = 'https://www.google.com/webmasters/tools/dashboard?hl=en&siteUrl=http://'.urlencode($gwt_url).'/';
	$pr_cy = 'http://www.pr-cy.ru/analysis/'.urlencode($gwt_url);
	$twitter_reactions = 'http://search.twitter.com/search?q='. urlencode($url);
	$facebook = 'http://www.facebook.com/sharer.php?u='.urlencode($url);
	$twitter = 'http://twitter.com/home?status='.urlencode($title).'&nbsp;'.urlencode($url);
        $grabr = 'http://grabr.ru/add';
	$blogistica = 'http://blogistica.ru/submit';
	$seominds = 'http://seominds.ru/topic/add/';
	$webice = 'http://webice.ru/addnews.html';
	$vkontakt = 'http://vkontakte.ru/share.php?url='.urlencode($url);
	$lj = 'http://www.livejournal.com/update.bml?event='.urlencode($url).'&subject='.urlencode($title);
	$gbuzz = 'http://www.google.com/reader/link?url='.urlencode($url).'&title='.urlencode($title).'&srcURL=http://'.urlencode($gwt_url);
	$mm = 'http://connect.mail.ru/share?share_url='.urlencode($url);
	$ya_ru = 'http://my.ya.ru/posts_add_link.xml?URL='.urlencode($url).'&&title='.urlencode($title);;	
	$memori = 'http://memori.ru/link/?sm=1&u_data[url]='.urlencode($url);
	$bobrdobr = 'http://bobrdobr.ru/addext.html?url='.urlencode($url).'&title='.urlencode($title);
	$moemesto = 'http://moemesto.ru/post.php?url='.urlencode($url).'&title='.urlencode($title);
	$misterwong = 'http://www.mister-wong.ru/index.php?action=addurl&bm_url='.urlencode($url).'&bm_description='.urlencode($title);
 
	$links = array(
		'Статистика в Google Webmaster Tools' => $gwt,
		'Показатели сайта в PR-CY.ru' => $pr_cy,
		'Реакции в Twitter' => $twitter_reactions,
		'Опубликовать в Facebook' => $facebook,
		'Опубликовать в Twitter' => $twitter,
		'Опубликовать в вКонтакте' => $vkontakt,
		'Опубликовать в ЖЖ' => $lj,
		'Опубликовать в Google Buzz' => $gbuzz,
		'Опубликовать в Мой Мир' => $mm,
		'Опубликовать в Я.ру' => $ya_ru,	
                'Анонсировать в Grabr' => $grabr,
		'Анонсировать в Блогистике' => $blogistica,
		'Анонсировать в Seominds' => $seominds,	
		'Анонсировать в Webice' => $webice,		
		'Добавить в Memori.ru' => $memori,
		'Добавить в БобрДобр' => $bobrdobr,
		'Добавить в МоеМесто' => $moemesto,
		'Добавить в MisterWong' => $misterwong
 
	);
 
	$wp_admin_bar->add_menu( array(
		'title' => 'Share',
		'href' => false,
		'parent' => false
	));
 
	foreach ($links as $label => $url) {
		$wp_admin_bar->add_menu( array(
			'title' => $label,
			'href' => $url,
			'parent' => 'share',
			'meta' => array('target' => '_blank') 
		));
	}
 
}
 
add_action('admin_bar_init', 'wp_admin_bar_init');

Сохраняем файл function.php, открываем публичную часть сайта и видим новый пункт меню на панели администратора WordPress. В сущности — ничего сложного.

Как добавить свое меню на панель администратора WordPress

Что еще можно добавить?

Добавить можно практически любую ссылку, но параметры к ней можно дописать только в том случае, если вы можете их узнать из URL и передать при запросе.

Например, можно было бы еще добавить параметризированную ссылку на Яндекс.Вебмастер — но проблема в том, что в отличие от Google Webmasters, в котором ссылка указывается в явном виде, этот сервис формирует URL каждого проекта с помощью ID. Соответственно, вставить этот параметр автоматически нельзя — только вручную для каждого сайта.

Впрочем, ничто не мешает вам это сделать самостоятельно. Для добавления Яндекс.Вебмастер в список ссылок, достаточно внести 2 строки кода:

В функцию wp_admin_bar_links() добавляем:

$y_w = 'http://webmaster.yandex.ru/site/?host=xxx';

В массив $links добавляем:

'Статистика сайта в Яндекс.Вебмастер' => $y_w,
Обратите внимание, вместо «xxx» в первой строке нужно добавить идентификатор своего сайта.

По абсолютно аналогичной схеме можно добавить и Google Analytics и любые другие сервисы. С другой стороны, нет никаких ограничений в том, чтобы добавить обычную ссылку на сам сервис и выбирать нужный сайт вручную. Так, например, сделано с социальными сетями для вебмастеров. В общем — все зависит исключительно от вашей фантазии!

А какие пункты в панель администратора WordPress добавили бы вы?

В статье использованы материалы Problogdesign.com

27 комментариев к “Как добавить свое меню на панель администратора WordPress”

  1. Спасибо! Один только момент, нужно постоянно иметь бекап этого файла, иначе при обновлениях его будет затирать.

    ОтветитьОтветить
  2. @ denaie: спасибо за комментарий.

    Нет, при обновлении WordPress и/или плагинов, папка с темой не затрагивается. Соответственно, резервную копию файла делать, конечно, нужно — но это никоим образом не связано с обновлениями.

    А о том, как бекапировать блог на WordPress, я писал в статье «Как уберечься от проблем с хостингом».

    ОтветитьОтветить
  3. А сори затупил, не прочитал что это другой файл, обычно в темах просто такого нет, я и подумал на тот что из ядра.

    ОтветитьОтветить
  4. @ denaie: нет, это как раз именно тот, который размещается в папке /wp-content/themes/[название темы].

    Обычно он есть только в сложных темах — в простых в нем нет особой необходимости.

    ОтветитьОтветить
  5. Мне эта функция не понравилась, а для добавления в закладки и различные соц сети я использую сервис «одна кнопка».

    ОтветитьОтветить
  6. @ panda: ну, тут уж кто любит :) Но у «Одной кнопки» есть проблема — ее использование создает кучу исходящих ссылок — на каждый сервис из списка.

    ОтветитьОтветить
  7. Интересное решение, я даже не знала о том, что что-то подобное можно реализовать. Надо будет попробовать поставить эксперимент со своим блогом, чтобы сравнить с одной кнопкой. Хотя мне кажется, что все это вопрос привычки

    ОтветитьОтветить
  8. Великолепный трюк, появление панели в 3.1 обрадовало удобностью, теперь вообще ляпота, спасибо вам :)

    P.S. Сайт отличный, подписался

    ОтветитьОтветить
  9. Статья лишний раз напомнила мне обновить наконец мой WordPress до 3.1.=)

    ОтветитьОтветить
  10. Полезная статья. Чем больше работаешь с WordPress тем больше понимаешь, что ее до конца не изучить))))

    ОтветитьОтветить
  11. Еййй, я добавил этот код и уменя сайт не открывался я через хостинг его удалил что-бы открылся ((( почему не работает????

    ОтветитьОтветить
  12. @ Alex:

    почему не работает????

    Например потому, что уже существующий код в functions.php конфликтует с этим кодом. Более точно не скажу — «сайт не открывается», это уж никак не описание ошибки.

    ОтветитьОтветить
  13. @ Alex: код должен начинаться с <?php и заканчиваться ?>.

    То есть, содержимое файла должно выглядеть так:

    <?php

    сам код

    ?>

    Если какой-то код в файле уже есть, то новый должен быть размещен ДО закрывающего ?>.

    ОтветитьОтветить
  14. @ Yaroslav.CH:

    Вот оно что, спасибо огромное — работает!!!

    еще один вопрос, вот

    'Sidebar', 'before_widget' => '', // Add 'after_widget' => '', // Add 'before_title' => '', // Replaces 'after_title' => '', // Replaces )); }

    этот код я удалил, нечего там не повредит что я его удалил?

    ОтветитьОтветить
  15. @ Alex: WordPress зачастую некорректно обрабатывает код в комментариях.

    Похоже на код, который отвечает за включение и использование виджетов в сайдбаре блога. Если Вы используете виджеты, то нужно вернуть его обратно, а если же нет, то в принципе особой разницы нет.

    ОтветитьОтветить
  16. О, респект, тебе за код, правда бар это не очень мне нравится, но на некоторых сайтах его все же оставил.

    ОтветитьОтветить
  17. Настройка данного типа меню дело привычки. Иногда проще и удобнее посетить админ панель блога.

    ОтветитьОтветить
  18. Великолепная штука, буду пользоваться — очень понравилось и очень удобно :)

    ОтветитьОтветить
  19. Отличный блог, я только начал изучать wordPress не знал, что можно добавить свое меню, а как это сделать — очень полезно знать, спасибо автору за просвещение.

    ОтветитьОтветить
  20. @ Yaroslav.CH:

    Пользуюсь AddtoAny — исходящая ссылка только одна, да и та в нофоллоу без проблем прячется

    ОтветитьОтветить
  21. Интересная возможность, хотя, что касается ссылок на социалки, самое главное, нужно создать условия пользователям для того, чтобы они сами добавляли посты в социалки. Добавлять самому вот так, из админки, слишком трудоемко.

    ОтветитьОтветить
  22. У меня были круглые глаза, когда я начал читать! =) Спасибо, статья очень полезная, добавил в закладки, чтобы углубиться позже, а то ночь, спать охота. Конечно такие функции как добавить в твиттер, facebook и т.д. у меня влючены автоматически. Rss — twitter — facebook, а в закладки одним кликом добавляю. А вот анонсы в социалки для ВМ стоит добавить =)

    ОтветитьОтветить
  23. Замечательный пост. И сам блог кажись не плох. Я уж молчу об nofollow. Больше постов об оптимизации вордпресс шаблонов, так как не люблю генерируемый cms-ками говнокод с ненужными комментариями и отступами.

    ОтветитьОтветить
  24. Только начинаю осваивать ВордПресс. Даже не предполагал, что есть такие интересные возможности. Особенно понравилось, что таким образом можно избавиться от лишних ссылок с сайта. Очень интересное обсуждение в комментариях.

    ОтветитьОтветить

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

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