Блог свободен от NOFOLLOW!

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

Дата: 28-03-2011 | Автор: Yaroslav.CH | Рубрика: Система управления сайтом (CMS)
Метки: ,

27

Как добавить свое меню на панель администратора 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 комментариев

перейти к форме для комментирования

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ Alex:

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

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

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

@ Yaroslav.CH:

я уже и удалял отуда текст всёравно не работает, вот скрин www.proofsite.com.ua/goto...2-clip-141kb.jpg

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

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

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

<?php

сам код

?>

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

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

@ Yaroslav.CH:

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

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

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

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

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

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

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

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

Хорошо, спасибо огромное!

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

@ Alex: всегда пожалуйста :)

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

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

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

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

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

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

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

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

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

@ Yaroslav.CH:

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

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

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

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

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

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

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

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

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

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

А Вы оставили комментарий? Ваше мнение очень важно!

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