UserJS-скрипт на jQuery для авторизации в WordPress

Давно я обещал опубликовать данный пост и вот, наконец, делаю это сегодня.

Как я уже писал ранее, я интегрировал в браузер Opera свой любимый фреймворк jQuery и по мере необходимости пописываю скрипты на нем. Благодаря этому мне удается сотворить что-нибудь этакое-разэтакое, чего я вряд ли смог бы сделать на простом JavaScript, да и файлы получаются совсем небольшими.

Один из этих скриптов — авторизация на WordPress-сайте через всплывающее окно по нажатию на горячую клавишу, который взят из плагина Login-box.

У меня это выглядит вот так:

Всплывающая форма авторизации WordPress

Данный скрипт должен работать в браузерах Opera (проверено мной), FireFox (не проверял) и других, которые на движке Gecko. Надеюсь, что вы знаете, каким образом устанавливать UserJS-скрипты. Если нет, то, погуглив, легко найдете инструкцию.

Скачать

В архив я положил сам скрипт, плюс фреймворк jQuery (версия 1.3.1). Оба файла нужно закинуть в папку с вашими UserJS-скриптами.

Настройки

Откройте в текстовом редакторе файл wp_login_box.js и укажите адрес сайта, на котором хотите использовать этот скрипт, в следующей строчке:

// @include http://sitename.ru/*

Если сайтов несколько, то сделайте копии этой строки и в каждой укажите нужный адрес. Звездочка на конце адреса означает, что скрипт будет работать на всех страницах сайта. Если вы удалите звездочку, то форма авторизации будет работать только на главной странице сайта.

Что можно сделать еще. Расскажу на моем примере. В верхней части скрипта вы увидите вот такую строчку:

if (window.location.href.indexOf('wp-admin')==-1) {

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

У меня эта строчка выглядит следующим образом:

if (!document.getElementById("wpabar") && window.location.href.indexOf('wp-admin')==-1) {

Это означает, что, если я уже авторизован, то при нахождении на любой странице сайта (не в админке), скрипт также не подключается. Это происходит благодаря тому, что я использую плагин WordPress Admin Bar, и после авторизации в коде страниц сайта появляется меню, которое помечено идентификатором id="wpabar".

Если вы также используете этот плагин или у вас есть какой-то хтмл-код, содержащий идентификатор, который появляется только после вашей авторизации, то можете поступить по аналогии с моим примером.

Ну и последнее, что осталось сказать — форма авторизации всплывает по нажатию на комбинацию Ctrl+E или Alt+E (в Опере работает только первая комбинация).

Комментарии (18)
  1. 1
    @

    Поставил себе в Оперу — авторизация работает, но при этом дизайн админки совершенно разваливается — не подключается CSS. 2 раза проверил — как убираю скрипты, так все с дизайном нормально, стоит только вернуть — опять css не пашет :(…
    Опера 9.63

    • 2

      Весьма странно. Я использовал этот скрипт и в 9.61, и сейчас в 10-й, ничего подобного не наблюдал. Попробуй поставить оригинальный плагин (ссылка в посте) и посмотри, будет ли он работать, как надо.

  2. 3
    @

    О! Огромное спасибо тебе, я так ждал этого поста :)

  3. 5
    @

    А можешь еще рассказать, каким плагином ты сделал так чтобы после комментирования показывался только excerpt из поста?

    • 6

      Это просто небольшая функция. В файл functions.php своей темы вставь следующий код:

      function seo_paged_comments_content_filter($t = '') {
      	$cpage = intval(get_query_var('cpage'));
      	if (!empty($cpage)) {
      		remove_filter('the_content', 'seo_paged_comments_content_filter');
      		$t = '<p>'.get_the_excerpt().'</p>'."\n";
      	}
      	return $t;
      }
      add_filter('the_content', 'seo_paged_comments_content_filter');
      

      Он делает следующее — если находишься на странице, содержащей в адресе comment-page- (когда активирована опция постраничной разбивки комментов), то вместо целой статьи выводится анонс.

  4. 7
    Муравей
    @

    Хорошая штука. Я как фанат оперы заценил. Спасибо! Но есть вопрос. Можно как-то добавить в скрипт редирект сразу в админку после входа? А то у меня на паре блогов нету линки «Администрирование» с главной. Подскажите плиз, т.к. я в пхп не рублю. Заранее благодарсвую.

    • 8

      Тут в пхп и не нужно рубить ))) Делается очень просто. В коде скрипта найди следующий код:

      <input type="hidden" name="redirect_to" value="' + window.location.href + '" />

      и замени вот эту часть: ' + window.location.href + ' на ссылку, куда хочешь переходить после авторизации.

  5. 9
    Муравей
    @

    Спасибо, но есть одно НО. Обнаружил, это после первого входа в админку. Вернее в момент входа. Страница так и не загрузилась…
    Скрипт не то чтобы подгружает оперу…. она просто перестает грузить сайты О_о
    Это обнаружил еще до изменений в скрипте

  6. 12

    Разобрался, в чем дело. Причина в версии jQuery, которая в файле a_jquery.js. Почему-то конфликт с версией 1.3.x. Заменил на 1.2.6. С ней работает. Скачайте архив заново.

    И еще примечание. Если у вас на сайте jQuery уже подключен, то файл a_jquery.js можно вообще не копировать в папку с вашими UserJS.

    Сообщите, плиз, работает ли теперь.

  7. 13
    Муравей
    @

    Да Да Да Да Да!
    Теперь заработало!!!!! все дело действительно в в версии jQuery
    О велики маг и кудесник, СПАСИБО АГРОМАДНОЕ!
    Оч удобно теперь. (^_^)

    Еще вопрос. Объясните чайнику что в скрипте вставить вместо

    ' + window.location.href + '

    чтобы работало не только для одного сайта.

  8. 15
    @

    Здравствуйте, хотелось бы задать чисто технический вопрос, а именно, как вы подключили jQuery, не упоминая его в основном файле скрипта?
    В userjs разбираюсь еще только, поэтому знаний не особо много. А вот ваш ответ мог бы очень неплохо меня продвинуть вперед.
    Заранее спасибо!

  9. 17
    Den
    @

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

    Есть несколько вопросов по вашему скрипту:

    1. Возможно ли его использовать для авторизации на других сайтах (не WordPress)?

    2. Как после авторизации произвести переход на следующую страницу, потом еще на следующую, то есть где прописать эти ссылки? Как я понял из вашего поста выше, для одного перехода нужно править

    <input type="hidden" name="redirect_to" value="' + window.location.href + '" />

    а что нужно туда добавить еще для одного перехода?

    3. Можно ли с помощью этого скрипта заполнить чекбоксы на странице уже после авторизации и перехода следующую страницу?

    4. Ну и последнее. Как реализовать автоматическую авторизацию, без горячих клавиш. Заходишь на определенный сайт, скрипт сам все заполняет и переходит.

    Заранее спасибо за ответ.