Измените ссылку "Вернуться на веб-сайт" в wp-login.php


Форма входа на странице wp-login.php внизу есть ссылка с надписью "Вернуться к имени веб-сайта" Эта ссылка всегда перенаправляет на домашнюю страницу, я бы хотел, чтобы она перенаправляла на страницу, с которой пришел пользователь.

Я полагаю, что для этого требуется крючок, добавленный к functions.php но я не уверен, как и не смог ничего найти во время поиска.

Есть идеи?

Author: stemie, 2013-01-18

3 answers

Вы можете добиться этого с помощью Javascript и login_footer крючка действия, чтобы изменить атрибут href ссылки Back to:

<?php

add_action('login_footer', 'ad_login_footer');

function ad_login_footer() {
    $ref = wp_get_referer();
    if ($ref) :
?>
<script type="text/javascript">
    jQuery(document).ready(function($){
        $("p#backtoblog a").attr("href", '<?php echo esc_js($ref); ?>');
    });
</script>
<?php
    endif;
}

?>

Редактировать:

Благодаря ответу @brasofilo вам может потребоваться загрузить jQuery в wp-login.php. Возможно, он уже загружен вашей темой или другим плагином, поэтому вам нужно проверить. Чтобы загрузить jQuery, чтобы использовать приведенный выше код:

add_action('login_head', 'jquery_for_wp_login');

function jquery_for_wp_login() {
    wp_print_scripts(array('jquery'));
}
 2
Author: Ahmad M, 2013-01-18 14:51:59

Эта ссылка не имеет никакого крючка , который позволяет изменять ее напрямую.

Это должно быть сделано с помощью Javascript, и, поскольку страница входа в систему по умолчанию не загружает jQuery ( по крайней мере, это то, что происходит в моей тестовой среде), Я искал чистое решение JS.

Итак, этот код подключается к действию login_footer и печатает сценарий JS, который изменит ссылку на history.go(-1);.

add_action( 'login_footer', 'change_back_to_blog_wpse_82152' );

function change_back_to_blog_wpse_82152()
{
    ?>
    <script type="text/javascript">
        function init() {
          // quit if this function has already been called
          if (arguments.callee.done) return;

          // flag this function so we don't do the same thing twice
          arguments.callee.done = true;

          // kill the timer
          if (_timer) clearInterval(_timer);

          // CHANGE THE LINK
          document.
              getElementById('backtoblog').
              getElementsByTagName('a')[0].
              href = 'javascript:history.go(-1);';
        };

        /* for Mozilla/Opera9 */
        if (document.addEventListener) {
          document.addEventListener("DOMContentLoaded", init, false);
        }

        /* for Internet Explorer */
        /*@cc_on @*/
        /*@if (@_win32)
          document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
          var script = document.getElementById("__ie_onload");
          script.onreadystatechange = function() {
            if (this.readyState == "complete") {
              init(); // call the onload handler
            }
          };
        /*@end @*/

        /* for Safari */
        if (/WebKit/i.test(navigator.userAgent)) { // sniff
          var _timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) {
              init(); // call the onload handler
            }
          }, 10);
        }

        /* for other browsers */
        window.onload = init;
    </script>
    <?php
}
 1
Author: brasofilo, 2017-05-23 12:40:07

Если вы ищете решение на PHP, я бы выбрал следующее:

  • Для этой ссылки нет конкретного крючка/действия/фильтра, который вы могли бы использовать.
  • Однако существует общее home_url фильтр в действии на этой странице входа.

Что вы можете сделать, так это взять отпечаток функций-крючков, которые вызываются на этой странице, проверить запрошенную страницу и создать условную фильтрацию, которая фильтрует значение home_url только в этом конкретном сценарий.

Красиво заверните его в собственный плагин и сохраните, например, в папке плагинов, которые необходимо использовать. Предотвращает взлом ядра (например, если вы не используете какой-либо контроль версий).

В противном случае, если вы находитесь под git, просто разветвляйтесь, добавьте свой собственный фильтр для этой ссылки, введите плагин и будьте в курсе, когда вам нужно (меньше проблем).

 1
Author: hakre, 2013-01-18 15:14:16