WordPress: доступ к админ-меню и авторизация со страниц сайта
Если вы часто заходите в админку WordPress-сайта, то, согласитесь, было был гораздо удобнее иметь на каждой странице сайта блок с прямыми ссылками в админку на часто выполняемые задачи, например, ссылку на страницу создания новой записи или страницу модерации комментариев.
Расскажу, как интегрировать такое меню. Причем, его будете видеть только вы, как администратор, после того, как авторизуетесь в админке.
Это меню можно либо интегрировать в сайдбар, чтобы оно выглядело аналогично другим блокам, либо зафиксировать в пустом пространстве страницы, как это сделано у меня:

С помощью стилей я зафиксировал этот блок, поэтому при прокрутке страницы он находится всегда в одной и той же позиции относительно окна браузера. Для меня это очень удобно.
Чтобы выводить подобное меню только тогда, когда вы авторизованы как админ, необходимо использовать специальную функцию current_user_can() с параметром level_10, который указывает на то, что это пользователь с правами администратора.
Код будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 | <?php if (current_user_can('level_10')) { ?> <ul> <li><a href="/wp-admin/post-new.php">Написать пост</a></li> <li><a href="/wp-admin/edit.php">Управление</a></li> <li><a href="/wp-admin/edit-comments.php">Комментарии</a></li> <li><a href="/wp-admin/options-general.php">Настройки</a></li> </ul> <?php } ?> |
В список ссылок, естественно, вы можете добавить только те, которые вам нужны.
Можно пойти еще дальше, и сделать так, что, если вы не авторизованы, то на месте этого меню будет отображаться форма входа в админку. У меня это выглядит следующим образом:

В результате код будет выглядеть вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php if (current_user_can('level_10')) { ?> <ul> <li><a href="/wp-admin/post-new.php">Написать пост</a></li> <li><a href="/wp-admin/edit.php">Управление</a></li> <li><a href="/wp-admin/edit-comments.php">Комментарии</a></li> <li><a href="/wp-admin/options-general.php">Настройки</a></li> </ul> <?php } else { ?> <form name="loginform" id="authoriz" action="/wp-login.php" method="post"> <input type="text" name="log" value="" id="login" /> <input type="password" name="pwd" value="" id="password" /> <input type="hidden" name="rememberme" value="forever" /> <input type="hidden" name="redirect_to" value="/" /> <label for="rememberme"><input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /> Запомнить меня</label> </form> <?php } ?> |
Я пошел еще дальше в плане авторизации. Вы, наверное, уже успели заметить, что форму авторизации сейчас на моем блоге вы почему-то не наблюдаете слева от контента. Так вот, дело в том, что этот блок выводится только для меня - через UserJS, который поддерживается браузером Opera. На всеобщее обозрение выставлять авторизацию совсем не хочется, поэтому я реализовал ее через скрипт, загружаемый с моего компьютера.
Если я не ошибаюсь, технологию UserJS поддерживает также браузера FireFox, поэтому, если найдутся желающие, в отдельной статье могу рассказать, как создать этот скрипт с формой авторизации для WordPress, которую будете видеть только вы.
Спасибо за статью. Как раз то, что мне сейчас надо. Насчет UserJS можно было бы поподробнее. Можно ли эту технологию использовать для предавторизации? То есть, если пользователь уже был на блоге и оставлял комментарии, в следущий раз авторизовывать его по автомату…
Спасибо, очень полезная вещь.
Вопрос не по теме: как в wp убрать со страницы single.php отображение куска кода, где отображает категорию и кол-во комментариев ? Подскажите пожалуйста, если знаете.
для FF - было бы очень интересно, по крайней мере мне ;)
@jeenart
поучите матчасть, “спросите” на форуме
Вариант для тех, кому копаться в коде лень: http://mywordpress.ru/plugins/minimeta-widget/2/
Супер, не перестаёшь удивлять ))
Файл UserJS сохраняется не на сервере, а на компьютере пользователя, поэтому не получится. И в любом случае, я не знаю, как это делается.
sonika, спасибо за альтернативу.
спасибо, очень полезная вещь. как раз вчера я задавался вопросом, как упростить написание постов для пользователей. Правда, я думал не о stand-alone WP, а о его мультибрате - WPMU. Надеюсь, там такая фишка тоже прокатит, пойду пробовать :)
Никита, по идее, на WPMU это тоже должно прокатить.
могу еще порекомендовать готовый плагин - wordpress admin bar - как раз добавляет удобную панель админки на все страницы сайта. я писал про него, правда на украинском http://lilumi.org.ua/wordpress/zruchna-admin-panelka-wordpress-admin-bar
а еще есть классный плагин - login box , предназначенный для авторизации на любой странице блога с помощю всплывающей формы на быстрые клавиши - http://danillonunes.net/en/wordpress/login-box/
lilumi, благодарю за инфо. Оба плагина понравились. Достойны внимания. Только второй почему-то недоступен при попытке скачать.
loginBox можно еще скачать с раздела extend на офф.сайте вордпресса - http://wordpress.org/extend/plugins/login-box/
Спасибо. На wordpress.org я искал, но почему-то не нашлось :)
На сайтах с движком вордпресс использую MiniMeta виджет. Полезе для ленивых или новичков, ибо переделывать ничего не нужно :-)
Спасибо за статью. А если поставить не 10 уровень, а меньше, например 4 это запись увидет только пользователь с уровнем 4 или 4 и больше?
www221, да именно так. Только цифру менять стоит, знаючи, что она означает. В кодексе WordPress есть подробная информация по этому поводу.
Спасибо, про уровни знаю.
Привет! Расскажите пожалуйста, как в RSS выводить картинки. У меня данный вопрос стоит уже давно, ничего не могу придумать. Веду фотоблог skokov.ru, проблема актуальна, т.к. в фотоблоге часто нет текста, поэтому RSS становится неинформативным.
Если в RSS отдается полная статья и не используются какие-либо плагины, обрезающие фид, то картинки должны быть в нем.
Весьма полезно. спс
Палгинов позволяющих проделать похожий трюк немало, например можно приспособить симпатичную всплывающую панельку WP Sliding Login Dashboard Panel, которая выводит поверх окна пустой div.
А главное в тему статьи. =)))
В качестве альтернативы можно предложить еще такой вариант
2
3
4
5
//Что выводить когда пользователь залогинен
<?php } else { ?>
//Что вывести если не залогинен
<?php } ?>
Есть очень приличный плагин для этих целей. Всплывающая панель (сверху) - WS Tools Bar. Если подправить скрипт (русифицировать ссылки) - удобней я еще ничего не видел. Советую.