Добавляем свои пункты в Admin Bar WordPress
Не так давно занялся кроспостингом в Интернет и долго искал сервисы, на которые можно публиковать данные на автомате из своих блогов, но как оказалось это не так просто. Например, социальная сеть Вконтакте и Google+ не хотят таким заниматься. Думаю что обходные пути есть но я их честно говоря так и не нашел, то ли времени не было, толи просто было лень.
Почесав хорошенько репу я решил что мне не сложно нажать пару кнопок чтобы написанный пост отправить на стену в соц сеть. Отсюда родилась идея найти как в стандартный Admin Bar WordPress добавить нестандартные кнопочки.
На одном из сайтов, уже точно не помню на каком, нашел код особо даже и без описания но по коду все мне было понятно и так. Всегда думал что это сложнее ).
Начнем создавать нестандартный Admin Bar WordPress
Для начала откройте файл функций из вашей темы, куда можно добавлять безболезненно свои функции. Находится этот файл по адресу:
wp-content/themes/название вашей темы/functions.php
В открытом файле в самом конце добавляем код.
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
/********************************/ // новое меню в админ баре 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 = 'https://'. $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; $html = file_get_contents($url); if(preg_match('/(.*)<\/title>/smU', $html, $matches)) { $title = $matches[1];} $gwt_url = ''. $_SERVER["SERVER_NAME"]; $hitUa = 'https://hit.ua/home'; $gwt = 'https://www.google.com/webmasters/tools/dashboard?hl=en&siteUrl=https://'.urlencode($gwt_url).'/'; $yandexMetrika = 'https://metrika.yandex.ua/list/'; $pr_cy = 'https://www.pr-cy.ru/analysis/'.urlencode($gwt_url); $cy_pr = 'https://www.cy-pr.com/analysis/'.urlencode($gwt_url); $alexa = 'https://www.alexa.com/siteinfo/'.urlencode($gwt_url); $gPlus = 'https://plus.google.com/u/0/b/106026944582268240509/106026944582268240509/posts'; $twitter_reactions = 'https://twitter.com/#!/search/realtime/'. urlencode($url); $facebook = 'https://www.facebook.com/UrokiWordPress'; //$facebook = 'https://www.facebook.com/sharer.php?u='.urlencode($url); $twitter = 'https://twitter.com/home?status='.urlencode($title).' '.urlencode($url); $grabr = 'https://grabr.ru/add'; $blogistica = 'https://blogistica.ru/submit'; $seominds = 'https://seominds.ru/topic/add/'; $webice = 'https://webice.ru/addnews.html'; $vkontakt = 'https://vkontakte.ru/share.php?url='.urlencode($url); $lj = 'https://www.livejournal.com/update.bml?event='.urlencode($url).'&subject='.urlencode($title); $gbuzz = 'https://www.google.com/reader/link?url='.urlencode($url).'&title='.urlencode($title).'&srcURL=https://'.urlencode($gwt_url); $mm = 'https://connect.mail.ru/share?share_url='.urlencode($url); $ya_ru = 'https://my.ya.ru/posts_add_link.xml?URL='.urlencode($url).'&&title='.urlencode($title);; $memori = 'https://memori.ru/link/?sm=1&u_data[url]='.urlencode($url); $bobrdobr = 'https://bobrdobr.ru/addext.html?url='.urlencode($url).'&title='.urlencode($title); $moemesto = 'https://moemesto.ru/post.php?url='.urlencode($url).'&title='.urlencode($title); $misterwong = 'https://www.mister-wong.ru/index.php?action=addurl&bm_url='.urlencode($url).'&bm_description='.urlencode($title); $addArticleWPLessons = 'https://wp-admin.com.ua/'; $links = array( 'Статистика в Google Webmaster Tools' => $gwt, 'Статистика в HIT.UA' => $hitUa, 'Статистика в Yandex Metrica' => $yandexMetrika, 'Показатели сайта в PR-CY.ru' => $pr_cy, 'Показатели сайта в cy-pr.com' => $cy_pr, 'Alexa Info'=>$alexa, 'Опубликовать в Google+' => $gPlus, 'Реакции в 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.com.ua' => $addArticleWPLessons, ); $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'); /***********************************************************/// новое меню в админ баре |
Рассмотрим код нашего Admin Bar по порядку. Первая функция wp_admin_bar_init проводит инициализацию нашей кнопки в Admin Bar. В этой функции проверяется, вошел пользователь как администратор и включен ли у него админ бар. Если все условия успешно получили истину, то специальный хук к выполнению кода движка добавляет еще и выполнение функции wp_admin_bar_links().
global $wp_admin_bar — метод, который является экземпляром класса WP_Admin_Bar. Далее все еще проще. Внутри функции wp_admin_bar_links() мы описываем переменные с путями, куда должны попасть при нажатии на один из пунктов создаваемого нами меню в Admin Bar. Массив $links представляет выводимый внешний вид пунктов меню.
Ну и наконец добавляем сам пункт на Admin Bar $wp_admin_bar->add_menu( array… . Ниже в цикле добавляются подпункты из массива $links.
foreach ($links as $label => $url) {
Результат работы созданного AdminBar
В общем и все. Жду ваших комментариев, предложений как еще можно использовать этот код и советов по доработке кода.
Еще одна статья в тему: Добавляем кнопку в admin bar. Добавить в корзину.

/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.