
Додаємо свої пункти до 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().
глобальний $wp_admin_bar – метод, який є екземпляром класу WP_Admin_Bar. Далі все ще простіше. Усередині функції wp_admin_bar_links() ми описуємо змінні з шляхами, куди повинні потрапити при натисканні на один із пунктів створюваного нами меню Admin Bar. Масив $links представляє зовнішній вигляд пунктів меню, що виводиться.
Ну і нарешті додаємо сам пункт на Admin Bar $wp_admin_bar->add_menu( array… . Нижче в циклі додаються підпункти з масиву $links.
foreach ($links як $label => $url) {
Результат праці створеного AdminBar
Загалом і все. Чекаю на ваші коментарі, пропозицій як ще можна використовувати цей код та порад щодо доопрацювання коду.
Ще одна стаття на тему: Додаємо кнопку до admin bar. Додати до кошику.

/*

- Базовий курс з веб-дизайну;
- Верстка сайтів;
- Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
- Розробка сайтів на PHP.